docker部署Python Django前后端分离项目
程序员文章站
2022-06-13 16:58:15
...
一、部署准备
1、创建项目目录,将资源都放在该目录下
tree docker/
docker/
├── backend
│ ├── Dockerfile
│ └── start.sh
├── docker-compose.yaml
└── front
├── Dockerfile
└── nginx
3 directories, 4 files
2、安装docker(centos)
#将yum包更新至最新
$ sudo yum update
#卸载旧版本docker(如果之前有安装)
$ sudo yum remove docker docker-common docker-selinux docker-engine
#安装依赖包
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#获取docker-ce的yum源
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#筛选自己所需要的docker版本
$ yum list docker-ce --showduplicates | sort -r
#安装docker
$ yum install -y docker-ce-版本号
#启动并设置开机自启
$ systemctl start docker && systemctl enable docker
#配置镜像加速
$ vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://yeopv49g.mirror.aliyuncs.com"]
}
$ systemctl daemon-reload && systemctl restart docker
二、制作镜像
1、制作后端程序镜像
$ cd docker/backend/
$ vim Dockerfile
FROM python:3.7-alpine #设置基础镜像
#更换安装源并安装基础依赖包
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories\
&& apk --update add --no-cache libxml2-dev libxslt-dev libffi-dev gcc musl-dev libgcc \
&& apk add --no-cache openssl-dev curl jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev
WORKDIR /app #设置工作目录
COPY . /app #将代码全部放到容器上
#安装pipenv并根据pipfile.lock安装程序所需依赖包
RUN pip install pipenv --no-cache-dir -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \
&& cd senguocashier-backend/ \
&& pipenv install --deploy --system --ignore-pipfile \
&& rm -fr ~/.cache/pip* \ #删除pip缓存,缩小镜像
&& rm -fr /tmp
RUN chmod +x /app/start.sh
CMD ["./start.sh"] #用脚本启动程序
start.sh启动脚本内容:
$ cat start.sh
python ./code/manager.py runserver
Dockerfile关键点说明:
docker本身就是虚拟环境,所以在制作镜像的时候使用pipenv install --system将依赖安装到容器的python环境中,不需要创建虚拟环境进行安装。
制作镜像过程中无法安装pillow的问题请参照pillow报错处理方式。
启动容器:
$ docker build -t 镜像name .
$ docker run --name 容器name -d 镜像name
(未完待续)
推荐阅读
-
Docker部署前后端分离项目的实现示例
-
利用docker-compsoe部署前后端分离的项目方法
-
Nginx + Gunicorn 部署 Django + @vue/cli 前后端分离项目
-
nginx+vue+uwsgi+django的前后端分离项目部署(解决前后端静态资源下载跨域问题)
-
若依前后端分离项目 Docker 部署
-
docker部署前后端分离项目(vue+express)
-
docker部署Python Django前后端分离项目
-
docker部署springboot+vue前后端分离项目
-
docker部署前后端分离项目手记
-
Nginx+uWSGI+Daphne部署前后端分离(django+Vue)项目里面包含(channels(websocket))踩坑篇