docker-compose 实践

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()))
原文地址:https://www.cnblogs.com/pythonwl/p/14955989.html