docker-compose 实践
git :
删除本地文件后,git pull不下来?删除文件也是一个操作,会有git管理记录。所以,这个文件是删除状态,pull不下来
docker-compose:
注意:
docker-compose up :从0开始搭建各种容器
docker-compose down : 停止各种容器,并且删除容器!!!
所以,mysql这种数据库最好不要编排
注意!!!
docker-compose 部署的容器中,必须有前置进程才能保证容器,运行了命令后,不立即退出。
比如,部署了django服务,但是,是后台运行。这个容器会立即退出。必须前台启动django服务才可以。
实例:
version: "3"
services:
linde_sub:
image: ${AAA}
restart: always
build: '.'
volumes:
- ./deploy_dirs/output/:/usr/output
- /etc/localtime:/etc/localtime
- ${BASE_DIR}/:/usr # 项目文件,映射一下
command: /bin/bash -c "cd /usr/linde_ai_gater/src/linde && PYTHONIOENCODING=utf-8 && touch aps.lock && python manage.py makemigrations && python manage.py migrate && rm aps.lock && gunicorn linde.wsgi -c gunicorn_config.py"
env_file:
- ./.env
environment:
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT}
BASE_DIR: ${BASE_DIR}
AI_HOST: ${AI_HOST}
AI_PORT: ${AI_PORT}
PROENV: ${PROENV}
ports:
- 8000:8000
nginx:
image: nginx:latest
restart: always
build: '.'
volumes:
- ./deploy_dirs/html:/usr/share/nginx/html # 前端打包文件
- ./deploy_dirs/nginx.conf:/etc/nginx/nginx.conf # nginx 配置文件
- ./deploy_dirs/log:/var/log/nginx # nginx 日志
ports:
- 80:80
- 8002:8002
运行实例的shell脚本
docker-compose -f docker_compose.yml stop && docker-compose -f docker_compose.yml up -d
mysql.yml
version: "3"
services:
mysql:
image: mysql:5.6.50
restart: always
environment:
MYSQL_ROOT_PASSWORD: linde4396
TZ: Asia/Shanghai
volumes:
- ./deploy_dirs/conf:/etc/mysql/mysql.conf.d/mysqld.cnf # 配置文件
- ./deploy_dirs/initdb:/docker-entrypoint-initdb.d # 初始化脚本,比如创建数据库
ports:
- 3306:3306、
初始化脚本 .sql
# 如果不存在数据库aaa,就创建
CREATE DATABASE if not exists aaa DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
环境变量 .env ,必须放到与 docker_compose.yml 文件同级目录下,或者 env_file 指定文件
BASE_DIR=/root/
LINDE_SUB_IMAGE=sub_image:latest
DB_HOST=127.0.0.1
DB_PORT=3306
AI_HOST=10.8.0.6
AI_PORT=5001
PROENV=pro
django 配置文件夹 : projectsrclindesettingsase_settings.py,dev.py,pro.py
uwsgi.py 文件 和 manage.py 文件,修改读取配置的文件路径即可:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.{}'.format(os.getenv('PROENV','dev').lower()))