Skip to content

实战案例

使用开源项目 django-vue3-admin 做案例,快速开发

在 django-vue3-admin 项目中默认有以下几个容器:

  1. mysql:持久化数据库容器
  2. redis:缓存数据库容器
  3. django:后端容器
  4. celery:异步任务容器
  5. web:前端容器
  6. 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

修改标签

将底层镜像修改成私有仓库的标签,参考华为云镜像仓库

alt text

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

如果前后端代码有修改,且添加了第三方库

  1. 先在本地重新构建镜像
  2. 将新构建的镜像上传华为云
  3. 在服务器上在执行
sh
docker-compose up -d --build web django celery