创建Docker镜像
已经写好了一个Django项目,需要将这个项目用docker封装一个镜像。 容器内使用nginx+uwsgi+django运行服务。 在封装并运行的过程中,发现了很多问题,这里会一一介绍!
目录结构由于基础镜像只包括ubuntu的基础功能,vim编辑器、tzdata时区选择都没有
- 存在时区问题
- 中文乱码问题
- 编译缺失gcc问题
- ubuntu18.04 ssl安装不上问题,不能使用pip(未解决)
- 容器启动后自动退出问题
# 基础镜像
FROM ubuntu:16.04
# 修改更新源为阿里云
ADD sources.list /etc/apt/sources.list
# Django项目文件
ENV POJ_PH /home/project
ENV PAC_PH /home/package
ADD mime.types $POJ_PH/
ADD cloud_account_service_server_nginx.conf $POJ_PH/
ADD cloud_account_service_server_uwsgi.ini $POJ_PH/
ADD cloud_account_service_server/ $POJ_PH/cloud_account_service_server/
ADD django3-cas-server-3.0.0.tar.gz $PAC_PH/
# 设置系统时区
ENV TZ Asia/Shanghai
# 设置语言
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
ENV LC_ALL C.UTF-8
# 安装基础环境
# 层数最多127层 可使用 && 拼接
RUN apt-get clean && apt-get update --fix-missing
# 系统环境
RUN apt-get install -y tzdata locales cron nginx vim dos2unix python3-pip python-dev libmysqlclient-dev
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 安装python环境
RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple uWSGI==2.0.18 Django==3.0.2 python-cas==1.4.0 requests==2.22.0 mysqlclient==1.4.6 && \
cd /home/package/django3-cas-server-3.0.0 && python3 setup.py install
# 映射端口
EXPOSE 8000
# 添加启动脚本
ADD run.sh .
# sh文件是windows下编辑的,直接执行会报错,文件格式需要转换
RUN dos2unix run.sh && chmod 755 run.sh
ENTRYPOINT ["sh", "/run.sh"]
run.sh
#!/bin/bash
# 启动任务计划
# /usr/sbin/cron
# 启动django项目
nginx -c /home/project/cloud_account_service_server_nginx.conf
uwsgi --ini /home/project/cloud_account_service_server_uwsgi.ini
top
sources.list
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
命令行执行
docker build -t 镜像名称:版本号 上下文目录
docker build -t django3_cas_server:v1.4 F:\work\Docker\service\cas_server
查看镜像
docker run -it -d -p 8003:8000 django3_cas_server:v0.1
就可以访问Django的默认页面了!
docker save django3_cas_server:v2.0 > F:\work\Docker\service\cas_server\Ubuntu16.04_Django3_cas_server.tar
导入镜像
docker load
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?