標籤

bat (54) 作品 (41) python (24) shell (17) windows (11) 虛擬機 (11) php (10) CPP (6) KMS (6) 程式設計 (6) docker (5) 使用教學 (5) xoops (4) 公文 (4) Apache2 (3) Excel (3) juniper (3) 資料庫 (3) 轉檔 (3) mysql (2) 免動手 (2) 資料結構 (2) 軟體廣播 (2) 電腦維修 (2) Android Studio (1) Apple IPAD管理 (1) Arduino (1) CSS (1) LAMP (1) NAS (1) Ubuntu (1) VHD (1) Windows Server (1) 原因 (1) 程式應用 (1) 程式積木 (1) 編輯器 (1) 雲端硬碟 (1)

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       



資料來源:

沒有留言:

張貼留言

只要點兩下,就能夠將InputAndOutput資料夾底下的子子孫孫資料夾內所有Word通通轉成PDF

  系列文章: 1. 只要點兩下,就能將一堆的Doc與Docx 轉成 PDF 1. https://skjhcreator.blogspot.com/2023/05/docdocx-pdf.html 2. 只要點兩下,就能將一堆的JPG轉成一個PDF,並以JPG所在的資料夾名稱為...