思路总结
利用docker-compose,管理部署项目,将项目代码在映射到容器内。

排错指令集
docker logs [容器ID]
docekr-composer build 构建镜像(修改dockerfile)
编写dockerfile注意事项
1.排序多行参数
尽可能通过字母数字排序多行参数来简化以后的更改
。这有助于避免软件包重复,并使列表更易于更新。这也使PR易于阅读和查看。在反斜杠(\)之前添加空格也有帮助。
将多行长或复杂的RUN语句分割成多行,并用反斜杠分隔,以使您Dockerfile更具可读性,可读性和可维护性。
RUN apt-get update && apt-get install -y \
bzr \
cvs \
git \
mercurial \
subversion
VOLUME
该VOLUME指令应用于公开由Docker容器创建的任何数据库存储区,
配置存储或文件/文件夹。
强烈建议VOLUME您将图像用于任何可变和/或用户可维修的部分。
ONBUILD
ONBUILD [INSTRUCTION]
该ONBUILD指令将映像用作另一个构建的基础时,将在以后的时间向该映像添加触发指令。触发器将在下游构建的上下文中执行,就像它已FROM在下游指令之后立即插入一样 Dockerfile。
[...]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src
[...]
docker-compose.yaml文件
注意mysql
,与adminie(项目容器)
以及nginx
修改配置文件回重新启动,所以必须设置restart: always
version: '3'
services:
mysql:
image: mysql:5.7
# bulid: mysql_docker_mysql:latest
# 设置字符编码
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
restart: always
volumes: # 设置初始化mysql密码
# - "mysqldb:/var/lib/mysql:rw"
- "./init.sql:/docker-entrypoint-initdb.d/init.sql"
environment:
MYSQL_ROOT_PASSWORD: QFedu123!
container_name: "django_test"
networks:
- dev
nginx:
build: ./nginx
restart: always
volumes: # 挂载静态文件和nginx配置文件
- /opt/Docker_comeper_data/adminIE/nginx/nginx_conf/:/etc/nginx/conf.d/
- /opt/Docker_comeper_data/adminIE/nginx/all_static/allstatic/:/allstatic
expose:
- "80"
ports:
- "8001:80"
networks:
- dev
container_name: "nginx_server"
redis:
image: redis:alpine
expose:
- "6379"
ports:
- "6379:6379"
container_name: "redis_server"
networks:
- dev
rabbitemq:
build: ./rabbitemq
expose:
- "5672"
# - "4369"
# - "5671"
# - "25672"
ports:
- "5672:5672"
container_name: "rabbitmq"
networks:
- dev
adminie:
# image: django:v2
restart: always
build: ./adminie
container_name: "adminIE_django"
expose:
- "22"
- "80"
ports:
- "8222:22"
- "8000:80"
networks:
- dev
networks : # 创建共享docker网络
dev:
driver: bridge
设置项目环境,uwsgi启动Django项目

init.sql

网友评论