用docker-compose容器化Flask应用
Dockerfile
:
FROM python:3.6.4
# 设置工作目录
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# 添加依赖(利用Docker 的缓存)
ADD ./requirements.txt /usr/src/app/requirements.txt
# 安装依赖
RUN pip install -r requirements.txt
# 添加应用
ADD . /usr/src/app
# 运行服务
CMD python manage.py runserver -h 0.0.0.0
docker-compose.yml
:
version: '2.1'
services:
users-service:
container_name: users-service
build: .
volumes:
- '.:/usr/src/app'
ports:
- 5001:5000 # 端口暴露(主机端口:容器端口)
构建镜像:
docker-compose build
构建完成后,启动容器:
docker-compose up -d
在docker-compose.yml文件中增加一个环境变量,用来加载开发环境的配置信息:
version: '2.1'
services:
users-service:
container_name: users-service
build: .
volumes:
- '.:/usr/src/app'
ports:
- 5001:5000 # 端口暴露(主机端口:容器端口)
environment:
- APP_SETTINGS=project.config.DevelopmentConfig
更新proejct/init.py文件,从环境变量获取应用的配置信息:
import os
from flask import Flask, jsonify
# 初始化app
app = Flask(__name__)
# 环境配置
app_settings = os.getenv('APP_SETTINGS')
app.config.from_object(app_settings)
@app.route('/ping', methods=['GET'])
def ping_pong():
return jsonify({
'status': 'success',
'message': 'pong!'
})
更新容器:
docker-compose up -d