1 环境
# 软件版本
python 3.8.16
django 3.2.3
centos 7.6
docker 20.10.8
docker-compose v2.6.1
mysql 5.7.26
2 项目结构介绍
路径没有硬要求,后续打包时填写目录正确即可。
project
├── docker_env # dockerfile配置目录
│ ├── django # 后端 dockerfile配置目录
│ │ └── DockerfileBuild # 后端 镜像 build dockerfile 文件
│ └── web # 前端 web配置目录
├── hippo # 后端项目目录
├── docker_start.sh # 后端启动脚本
├── hippo_api # 后端具体目录
│ ├── db.sqlite3
│ ├── hippo_api
│ ├── __init__.py
│ ├── logs
│ ├── manage.py # django 管理文件
│ └── scripts
├── pip.conf # pip 安装使用镜像源文件
└── requirements.txt # 环境需要依赖包
3 前期准备
3.1 配置文件准备
# 进入项目hippo目录
cd project/hippo
# 编辑文件 pip.conf文件
vi pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
# 生成 requirements.txt
pip freeze > requirements.txt
# 相对路径启动django项目,启动命令取决于manage.py的相对路径
vi docker_start.sh
#!/bin/bash
python hippo_api/manage.py runserver 0.0.0.0:8000
其余数据库配置文件可以自行修改django项目seting配置文件,本文重点docker打包。
3.2 权限配置(一定要配置)
# 服务启动脚本赋权
chmod +x project/hippo/docker_start.sh
4 Dockerfile编写
注意: 该dockerfile包含容器服务直接运行。打包后的容器docker run后,服务会直接启动。
如若希望启动容器后,通过docker exec -it 进入容器启动服务,请注释CMD启动服务部分。
# 建立 python3.8 环境
FROM python:3.8.16
# 镜像作者
MAINTAINER FEIFEI
# 设置 python 环境变量
ENV PYTHONUNBUFFERED 1
# 设置pip源为国内源
COPY ./hippo/pip.conf /root/.pip/pip.conf
# 安装部分必要包
RUN apt-get update && apt-get install bash bash-doc bash-completion git telnet iputils-ping -y
# 在容器内创建backend文件夹
RUN mkdir -p /backend
# 设置容器内工作目录
WORKDIR /backend
# 将当前目录文件加入到容器工作目录中(. 表示当前宿主机目录)
ADD ./hippo /backend
# pip安装依赖
# RUN python3 -m pip install -i https://mirrors.aliyun.com/pypi/simple/ -r ./requirements.txt
RUN pip install -r requirements.txt
# 启动服务命令
CMD ["chmod +x /backend/docker_start.sh"]
CMD ["/backend/docker_start.sh"]
5 打docker基础Build包
# docker build
cd project/
docker build -f ./docker_env/django/DockerfileBuild -t django_docker_img:v1 .
# docker build 参数
docker build -f Dockerfile -t ImageName:TagName dir
# 选项
-f Dockerfile配置文件
Dockerfile 镜像配置的Dockerfile 存放位置
-t 给镜像加一个Tag
ImageName 给镜像起的名称
TagName 给镜像的Tag名
Dir Dockerfile所在目录
# 查看打包生成的镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
django_docker_img v1 2c1d8e8c2e61 2 hours ago 1.03GB
6 运行docker容器及验证服务
# 启动容器,服务自启动,打包时以写入
docker run -it -d -p 8081:8000 --name mysite django_docker_img:v1
# 浏览器访问
http://192.168.192.10:8081/admin/login/