实战案例
使用开源项目 django-vue3-admin 做案例,快速开发
在 django-vue3-admin 项目中默认有以下几个容器:
- mysql:持久化数据库容器
- redis:缓存数据库容器
- django:后端容器
- celery:异步任务容器
- web:前端容器
- docs:文档容器
基础镜像
拉取镜像
将项目需要用到的基础镜像先拉取到本地:
- mysql:持久化数据库
- redis:缓存数据库
- python:后端运行环境
- node:前端运行环境
- nginx:前端代理
因为政策原因,可能需要科学上网才能拉取
sh
docker pull mysql:8.0
sh
docker pull redis:5.0.4-alpine3.9
sh
docker pull python:3.10-alpine
sh
docker pull redis:5.0.4-alpine3.9
sh
docker pull nginx:alpine
修改标签
将底层镜像修改成私有仓库的标签,参考华为云镜像仓库
sh
docker tag mysql:8.0 swr.cn-southwest-2.myhuaweicloud.com/muzili/mysql:8.0
sh
docker tag redis:5.0.4-alpine3.9 swr.cn-southwest-2.myhuaweicloud.com/muzili/redis:5.0.4-alpine3.9
sh
docker tag python:3.10-alpine swr.cn-southwest-2.myhuaweicloud.com/muzili/python:3.10-alpine
sh
docker tag node:22-alpine3.19 swr.cn-southwest-2.myhuaweicloud.com/muzili/node:22-alpine3.19
sh
docker tag nginx:alpine swr.cn-southwest-2.myhuaweicloud.com/muzili/nginx:alpine
推送到华为云镜像仓库
将基础镜像上传到镜像仓库,在上传仓库前,需要先登录,参考华为云设置
sh
docker push swr.cn-southwest-2.myhuaweicloud.com/muzili/mysql:8.0
sh
docker push swr.cn-southwest-2.myhuaweicloud.com/muzili/redis:5.0.4-alpine3.9
sh
docker push swr.cn-southwest-2.myhuaweicloud.com/muzili/python:3.10-alpine
sh
docker push swr.cn-southwest-2.myhuaweicloud.com/muzili/node:22-alpine3.19
sh
docker push swr.cn-southwest-2.myhuaweicloud.com/muzili/nginx:alpine
制作项目镜像
DockerfileBuild 文件
dockerfile
FROM swr.cn-southwest-2.myhuaweicloud.com/muzili/python:3.10-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk update && apk add bash bash-doc bash-completion git freetds-dev jpeg-dev linux-headers mysql-client mariadb-dev build-base libffi-dev openssl-dev zlib-dev bzip2-dev pcre-dev ncurses-dev readline-dev tk-dev postgresql-dev
WORKDIR /backend
COPY ./backend/requirements.txt .
RUN python3 -m pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt
dockerfile
FROM swr.cn-southwest-2.myhuaweicloud.com/muzili/node:22-alpine3.19
WORKDIR /web/
COPY ./web/package.json .
RUN npm install --registry=https://registry.npmmirror.com/
dockerfile
FROM swr.cn-southwest-2.myhuaweicloud.com/muzili/node:22-alpine3.19
WORKDIR /docs/
COPY ./docs/package.json .
RUN apk update && apk add git
RUN yarn install --registry=https://registry.npmmirror.com/
构建镜像
sh
docker build -f ./docker_env/django/DockerfileBuild -t swr.cn-southwest-2.myhuaweicloud.com/muzili/yh-base-django .
sh
docker build -f ./docker_env/web/DockerfileBuild -t swr.cn-southwest-2.myhuaweicloud.com/muzili/yh-base-web .
sh
docker build -f ./docker_env/docs/DockerfileBuild -t swr.cn-southwest-2.myhuaweicloud.com/muzili/yh-base-docs .
上传华为云
sh
docker push swr.cn-southwest-2.myhuaweicloud.com/muzili/yh-base-django
sh
docker push swr.cn-southwest-2.myhuaweicloud.com/muzili/yh-base-web
sh
docker push swr.cn-southwest-2.myhuaweicloud.com/muzili/yh-base-docs
服务器启动项目
首次启动
sh
docker-compose up -d
如果前后端代码有修改,但没有添加第三方库
sh
docker-compose up -d --build web django celery
如果前后端代码有修改,且添加了第三方库
sh
docker-compose up -d --build web django celery