# 基础镜像为python3.8 FROM python:3.8 # 将本机 . 也就是当前目录下所有文件都拷贝到image文件中指定目录 COPY . /usr/src/app/code_pro # 将/usr/src/app指定为工作目录 WORKDIR /usr/src/app/code_pro # 在image中安装运行django项目所需要的依赖 RUN pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt --no-cache-dir # 开放容器的8000端口,允许外部链接这个端口 EXPOSE 8000 # 启动命令 也可以不写 自己进入容器手动启动 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
写好Dockerfile之后
- 使用Dockerfile制作镜像docker image build -t code_pro:v1.0.0 .
- 使用上面创建好的镜像制作容器docker run -itd --name area_cut -p 8000:8000-v /home/app/logs:/usr/src/app/code_pro/logs code_pro:v1.0.0(自行选择端口映射和文件挂载)
- 进入容器docker exec -it area_cut bash
先装好docker的情况下安装docker-compose:
github安装 可能有点慢 建议采用下面安装方式
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
可以用daocloud下载
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
查看版本
docker-compose versiondocker-compose.yml编写
目录结构
文件内容
version: "3.0"
services:
area-cut:
image: "code_pro:v1.0.0" # 镜像名
# image: "3040/code_pro:${TAG:-1.0.0}" 格式化输入的话 同级目录建一个.env文件 下面详解
build:
context: ./
dockerfile: Dockerfile
restart: always
container_name: "area_cut"
volumes:
- /home/app/code_pro/logs:/usr/src/app/area_cut/logs # 设置容器时区与宿主机保持一致 ro只读 默认w
# - /home/app/code_pro/logs:/usr/src/app/area_cut/logs:ro # 设置容器时区与宿主机保持一致 ro只读 默认w
# - ./logs:/usr/src/app/logs
ports:
- 8000:8000
environment:
TZ: "Asia/Shanghai"
depends_on: # 容器依赖
- redis
- mysql
mysql:
image: mysql:5.7
# network_mode: "host" # 如果需要容器使用宿主机IP(内网IP),则可以配置此项
container_name: code_pro_mysql # 指定容器名称,如果不设置此参数,则由系统自动生成
restart: always # 设置容器自启模式
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # 设置utf8字符集
environment:
- TZ=Asia/Shanghai # 设置容器时区与宿主机保持一致
- MYSQL_ROOT_PASSWORD=3040modeling # 设置root密码
volumes:
- /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
- /data/code_pro/mysql/my.cnf:/etc/mysql/my.cnf
- /data/code_pro/mysql/data/:/var/lib/mysql
- /data/code_pro/mysql/conf.d:/etc/mysql/conf.d
ports:
- "18053:3306"
redis:
image: redis:5.0.14
container_name: code_pro_redis
restart: always
environment:
TZ: "Asia/Shanghai"
volumes:
- /etc/localtime:/etc/localtime:ro
ports:
- "18057:6379"
.env文件(动态格式化输入的时候才会用到,直接固定写法就不用了)
TAG=1.2.9
docker-compose常用执行命名
- build+启动 相当于上面dockerfile操作的第一步第二步命令docker-compose up -d
- 重启容器docker-compose restart
- 关闭容器docker-compose down
build+启动 --build 强制重新创建镜像(覆盖原来镜像)
docker-compose up -d --build



