2021年5月24日 星期一

Docker入門教學03_筆記與心得

文章分成

Docker入門教學01_筆記與心得

一、shell快速完成安裝docker
二、建立一個Docker版的Node.js程式,並完成部署與分享
三、利用ENTRYPOINT進行指定的程序
四、建立一個Nginx的Web服務器

Docker入門教學02_筆記與心得

五、建立Python3.8的開發環境
六、建立PostgreSql資料庫
七、使用pgadmin4管理PostgreSQL資料庫
八、建立自己的快取Redis

Docker入門教學03_筆記與心得

九、Docker Compose
十、Flask+Redis多服務開發部署
十一、建立Vue開發環境

九、Docker Compose

觀念:
Docker Compose 的安裝與使用
 
官網:
 
GitHub

實戰:
 
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo docker-compose --version

解除安裝
$ sudo rm /usr/local/bin/docker-compose
 
開發Python Web 應用(Flask)
建立資料夾work
$ mkdir work

進入資料夾work
$ cd work

建立main.py
$ pico main.py

檔案名稱:main.py
檔案內容:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
      return 'How are you! Are you OK?'

if __name__ == "__main__":
     app.run(host="0.0.0.0", debug=True, port=5000)

建立requirements.txt
$ pico requirements.txt

檔案名稱:requirements.txt
檔案內容:
flask==1.1.2

建立 Dockerfile
$pico Dockerfile
 
檔案名稱:Dockerfile
檔案內容:
#使用python:3.8-alpine版本
FROM python:3.8.3-alpine3.12
#將當前目錄映射到容器內/app目錄
ADD . /app
#設置/app為工作目錄
WORKDIR /app
#安裝python 需求包
RUN pip install -r requirements.txt
#啟動flask
CMD python main.py

建立flask image
$sudo docker build -t mark2470mark/myweb:0.1 
$sudo docker image ls
$sudo docker container run --name myweb -d -p 8088:5000 mark2470mark/myweb:0.1

$sudo docker container ls

$curl http://127.0.0.1:8088
打開瀏覽器,並在網址輸入  http://127.0.0.1:8088
 
刪除所有不用的容器
$sudo docker container prune
 $sudo docker container ls
停止容器
 $sudo docker container stop myweb
$sudo docker container prune
整個過程如下:

 接下來要談到 docker-compose.yml
 
文件版本: https://docs.docker.com/compose/compose-file/
現在使用的版本為 3.8
 
建立 docker-compose.yml
$pico docker-compose.yml
 
檔案名稱:docker-compose.yml
檔案內容:
version: '3.8'
services:
   myweb:
       build: .
       ports:
       - "8088:5000"
       volumes:
       - .:/app
 
容器啟動
$sudo docker-compose up
容器重新編譯後啟動
$sudo docker-compose up --build
容器重新編譯後啟動
$sudo docker-compose up -d --build
 
查詢容器狀態
$sudo docker-compose ps
 
執行myweb容器內的命令
$sudo docker-compose run myweb top

查看容器輸出日誌
(1)使用docker-compose
$sudo docker-compose logs -f myweb
 
(2)使用docker
$sudo docker logs -f work_myweb_1
 
容器停止
$sudo docker-compose stop


容器停止+消除(容器+網路)
$sudo docker-compose down
 
 容器停止+消除(容器+網路+image)
$sudo docker-compose down --rmi all 

 

 十、Flask+Redis多服務開發部署

觀念:
Docker Compose多服務開發部署(flask+Redis)
 
服務接構設計:
client<----> web(flask:myweb<---->db(redis:myredis)
 
實戰:
 
0.建立工作目錄並進入工作目錄
$mkdir work10
$cd work10

1.建立main.py
$pico  main.py
 
檔案名稱:main.py
檔案內容:
from flask import Flask
from redis import Redis
 
app=Flask(__name__)
redis=Redis(host='myredis',port=6379)
 
@app.route('/')
def hello():
      redis.incr('hits')
      return 'How are you!! We have met %s times. ' % redis.get('hits')
 
if __name__=="__main__":
     app.run(host="0.0.0.0", debug=True, port=5000)
 
2.建立 requirements.txt
$pico  requirements.txt
 
檔案名稱:requirements.txt
檔案內容:
flask==1.1.2
redis==3.5.3
 
3.建立Dockerfile
$pico Dockerfile
 
檔案名稱:Dockerfile
檔案內容:
#使用python:3.8-alpine版本
FROM python:3.8.3-alpine3.12
#將當前目錄映射到容器內/app目錄
ADD . /app
#設置/app為工作目錄
WORKDIR /app
#安裝python 需求包
RUN pip install -r requirements.txt
#啟動flask
CMD python main.py
 
4.建立docker-compose.yml
$pico docker-compose.yml
 
檔案名稱:docker-compose.yml
檔案內容:
version: '3.8'
services:
   myweb:
       build: .
       ports:
       - "8088:5000"
       volumes:
       - .:/app
       depends_on:
       - myredis
   myredis:
       image: redis:6.0.5-alpine 

5.容器重新編譯後啟動
容器啟動
$sudo docker-compose up
容器重新編譯後啟動
$sudo docker-compose up --build
容器重新編譯後啟動
$sudo docker-compose up -d --build
檢查image
$sudo docker image ls
查詢容器狀態
$sudo docker-compose ps

確認localhost打開的port
$netstat -nltp

測試web
$curl http://127.0.0.1:8088
 執行myweb容器內命令
$sudo docker-compose run myweb top

查看容器輸出日誌
(1)使用docker-compose
$sudo docker-compose logs -f myweb

(2)使用docker
$sudo docker logs -f work10_myweb_1
 
容器停止
$sudo docker-compose stop
容器停止+消除(容器+網路)
$sudo docker-compose down
容器停止+消除(容器+網路+image)
$sudo docker-compose down --rmi all

十一、建立Vue開發環境

 觀念:
1.Docker Node.js image的使用
2.安裝Vue Cli4等工具包
 
官網:
 
實戰:
0.建立工作目錄並進入工作目錄
$mkdir work11
$cd work11
 
1.取得Ubuntu image
$sudo docker pull node:12.20.1-buster
$sudo docker image ls

$mkdir src

2.建立Dockerfile
$pico Dockerfile
 
檔案名稱:Dockerfile
檔案內容:
FROM node:12.20.1-buster
ADD ./src /app
WORKDIR /app
ENV DEBCONF_NOWARNINGS yes
RUN apt-get update -y && \
         apt-get upgrade -y && \
         apt-get install -y \
                     build-essential -y \
                     curl \
                     nmap \
                     git \
                     nano \
         && rm -rf /var/lib/apt/lists/*
RUN npm install -g @vue/cli
 
3.建立image並啟動container
$sudo docker image build -t mark2470mark/vuecli4:0.1 .
$sudo docker image ls
$sudo docker container run -it -d mark2470mark/vuecli4:0.1 --name vuecli4 -v `pwd` /src:/app -p 8080:8080 
$sudo docker container ls
$sudo docker exec -it vuecli4 /bin/bash       



資料來源:

沒有留言:

張貼留言

Laravel 12 Model 資料庫中的資料表,並提供與資料庫互動的介面

相關系列文章: 1. 在 windows 10 安裝 laravel 12 studentManagement環境與設定 2. laravel 12 route 路由 3. laravel 12 Blade Templates 網頁模版 4. laravel 12 Control...