目錄結構
/app # python應用文件夾 api.py # API入口腳本文件 /docker # docker文件夾 docker-compose.yml # docker compose腳本文件 requirements.txt # python第三方依賴 run.sh # 容器啟動執行腳本文件
api.py
from flask import Flask, request # 創建一個服務,賦值給APP app = Flask(__name__) # 指定接口訪問的路徑,支持什么請求方式get,post @app.route('/HelloWorld', methods=['post', 'get']) # 請求后直接拼接入參方式 def get_ss(): # 使用request.args.get方式獲取拼接的入參數據 name = request.args.get('name') # 輸出結果 return 'Hello World! ' + name app.run(host='0.0.0.0', port=8880, debug=True) # 這個host:windows就一個網卡,可以不寫,而liux有多個網卡,寫成'0.0.0.0'可以接受任意網卡信息
docker-compose.yml
version: "3" # docker-compose版本 services: docker-python-demo: # docker-compose編排名稱,一般同微服務名稱,注意不要與其他服務重名 image: "python:3.7.0b4" # docker鏡像名及版本 hostname: docker-python-demo # docker容器主機名 container_name: docker-python-demo # docker容器名 volumes: # 掛載目錄 - ../app:/app # 項目相關 - ../docker:/docker # docker相關 ports: # 端口映射 - "8880:8880" environment: # 配置環境變量 - TZ=Asia/Shanghai # 設置時區 command: bash /docker/run.sh # 設置啟動命令 network_mode: bridge # 網絡模式:host、bridge、none等,一般bridge restart: unless-stopped # 自動啟動:unless-stopped、always等,unless-stopped為非正常停止則自動啟動 # external_links: # 外鏈其他服務,此處名稱為docker-compose編排名 # - mongodb
requirements.txt
flask
requests
run.sh
#!/bin/bash # 使用阿里雲源安裝必須組件 pip install -i https://mirrors.aliyun.com/pypi/simple/ -r /docker/requirements.txt # 運行API入口腳本 python /app/api.py
補充:
如果使用dockerfile進行環境定義,而以上配置沒有dockerfile文件,也可以使用dockerfile文件進行構建,在docker目錄下添加dockerfile文件:
# 基於鏡像基礎 FROM python:3.7.04b # 創建代碼文件夾工作目錄 /code RUN mkdir /code # 復制當前代碼文件到容器中 /code COPY . /code # 安裝所需的包 RUN pip install -r /code/requirements.txt -i https://pypi.douban.com/simple # 指定cmd的工作目錄 /code WORKDIR /code CMD ["python", "/app/api.py"]
docker-compose.yml修改為如下(簡單示例):
version: '3' services: docker-python-demo: build: . ports: - "8880:8880"
# redis: # image: "redis:alpine"
運行
在docker目錄執行下面命令,如需后台運行,加參數 -d:
docker-compose up
其他常用命令:
在后台運行服務: $ docker-compose up -d 查看當前運行服務: $ docker-compose ps 查看web服務在使用的環境變量: $ docker-compose run web env 停止服務: $ docker-compose stop 停止並刪除容器,網絡,允許和卷 $ docker-compose down --volumes
驗證服務
在瀏覽器中訪問:
http://127.0.0.1:8880/HelloWorld?name=2021