最近使用Docker封装Django应用发布,遇到了一些问题。接下来是所使用的DockerFile和注意事项:

一:数据库PSQL所需要的文件:

init-user-db.sql:x请修改为自己的值

    CREATE USER project_dbuser WITH PASSWORD 'xxxxxxx';CREATE DATABASE project_db;GRANT ALL ON DATABASE project_db TO project_dbuser;

DockerFile:x请修改为自己的值

# base镜像是postgres:lates
FROM postgres:latest# 镜像相关的资料信息
LABEL maintainer="xxx<xxx@gmail.com>"
LABEL version = "1.0"
LABEL description="my psql images"# 设置环境变量,超级管理员的密码是必须设置的
ENV POSTGRES_PASSWORD=xxxxxxx# 向/docker-entrypoint-initdb.d/目录下添加init-user-db.sql脚本
ADD init-user-db.sql /docker-entrypoint-initdb.d/

二、Django应用所需要的文件

DockerFile – Centos8 base:

FROM centos:8
LABEL maintainer="xxxx<xxxx@gmail.com>"# 初始化容器环境,yum原可以自己替换为国内的
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* && sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* && yum -y install epel-release && yum -y update
RUN yum groupinstall "Development tools" -y  && yum install openldap-devel python3-devel openssl-devel libffi-devel bzip2-devel crontabs wget vim -y
RUN wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz && tar xvf Python-3.8.5.tgz && cd Python-3.8*/ && ./configure --enable-optimizations && make altinstall && /usr/local/bin/python3.8 -m pip install --upgrade pip# 切换工作目录
WORKDIR /project_web# 使用环境变量设置django应用的参数,包括运行的端口以及连接数据的参数,值都可以自己修改
ENV RUN_PORT=xxxx
ENV DATABASE_HOST='x.x.x.x'
ENV DATABASE_PORT='xxxx'
EXPOSE $RUN_PORT# 拷贝自己的django应用目录拷贝到容器中
ADD . /project_web# 调整时区
RUN echo "Europe/London" > /etc/timezone
# 安装所需要的python包
RUN pip3.8 install -r requirement.txt
# 设置django文件存储的目录
RUN mkdir -p /project_web/projectdb/configurationDir && chmod 777 /project_web/projectdb/configurationDir
VOLUME ['/project_web/projectdb/configurationDir']# 在已经手动初始化psql后,可以进行后续的操作,包括写入初始数据,开启crontab定时调度任务
RUN python3.8 project_insert_db.py && python3.8 manage.py crontab add && crond restart
RUN python3.8 manage.py makemigrations && python3.8 manage.py migrate# django运用运行在8001端口号上
CMD python3.8 manage.py runserver 0.0.0.0:xxxx

DockerFile – Ubuntu 20.04 base:

FROM ubuntu:20.04
LABEL maintainer="xxxx<xxxx@gmail.com>"ENV DEBIAN_FRONTEND=noninteractiveRUN apt-get update && apt-get install -y python3.9 python3.9-dev python3-pip
RUN apt-get install build-essential  \libldap2-dev libsasl2-dev slapd ldap-utils tox \lcov valgrind cron curl vim -yRUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python3.9 get-pip.pyWORKDIR /project_web
ENV RUN_PORT=xxxx
ENV DATABASE_HOST='x.x.x.x'
ENV DATABASE_PORT='xxxx'
EXPOSE $RUN_PORTADD . /project_web
RUN pip3.9 install -r requirement.txt
RUN echo "Europe/London" > /etc/timezone
RUN mkdir -p /project_web/projectdb/configurationDir && chmod 777 /project_web/projectdb/configurationDir
RUN python3.9 project_insert_db.py && python3.9 manage.py crontab add && service cron restart
RUN python3.9 manage.py makemigrations && python3.9 manage.py migrate
CMD python3.9 manage.py runserver 0.0.0.0:xxxx

如下是笔者所用的python包的requirement.txt,可以按照自己的django应用自行修改:

asgiref==3.5.2
attrs==21.4.0
backports.zoneinfo==0.2.1
bcrypt==3.2.2
cffi==1.15.0
cryptography==37.0.2
Django==4.0.5
django-auth-ldap==4.1.0
django-crontab==0.7.1
future==0.18.2
importlib-resources==5.8.0
jsonschema==4.6.0
ldap3==2.9.1
netmiko==4.1.0
ntc-templates==3.0.0
paramiko==2.11.0
pip==22.1.2
ply==3.11
psycopg2-binary==2.9.3
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.21
pycryptodomex==3.14.1
PyNaCl==1.5.0
pyproject-toml==0.0.10
pyrsistent==0.18.1
pyserial==3.5
pysmi==0.3.4
pysnmp==4.4.12
python-ldap==3.4.0
PyYAML==6.0
scp==0.14.4
setuptools==47.1.0
six==1.16.0
sqlparse==0.4.2
tenacity==8.0.1
textfsm==1.1.2
toml==0.10.2
wheel==0.37.1
zipp==3.8.0

注意事项:

  1. 如果遇到crontab无法正常运行的情况,请删除django中的环境变量;
  2. PSQL数据库请自己先调试完成,再启动django应用的容器;
  3. 遇到文件操作无法写入容器的情况,保证容器中对应存储目录有权限后,还需要进行卷挂载;
  4. 如果想要在django容器没有启动的情况下使用python向psql数据库写入数据,请直接使用psql的语法而不是django的ORM。

文章如有误,请指正。

Django应用容器封装DockerFile分享相关推荐

  1. c沙箱与容器_orw技术分享

    c沙箱与容器_orw技术分享 一. 沙箱保护 文件系统隔离 (1)chroot chroot的主要功能是指定根目录,如"chroot '/home/star'",会启动一个新的sh ...

  2. Ubuntu18.04下安装NVIDIA显卡驱动、docker、nvidia-docker;容器中编译安装opencv-4.4.0与darknet-yolov4并完成测试;容器封装镜像转移。2022

    记录一下第一次在CSDN发博客,欢迎大家光临~ 文章目录 前言 一.宿主机配置 1.安装Ubunntu18.04 64位系统 2.为宿主机系统更换国内软件源Ubuntu 官方源服务器在欧洲,国内访问很 ...

  3. docker容器-实战(分享十六)

    前面一节主要是熟悉docker基本操作,本分享就进行介绍一些实战案例,实战才是王道.下面就通过常用的应用进行实战介绍 一.操作系统(CentOS) docker search centos docke ...

  4. day0---docker容器的dockerfile知识(5)

    一.容器的生命周期 检查本地是否存在镜像,如果存在就不存在即从远端仓库检索 利用镜像启动容器 分配一个文件系统,并在只读的镜像层外挂载一层可读写层 从宿主机配置的网桥接口中桥接一个虚拟接口到容器 从地 ...

  5. Docker 容器技术 — Dockerfile

    目录 文章目录 目录 Dockerfile docker image build Build Context Build 镜像层 Dockerfile 指令 构建指令 FROM(指定 base ima ...

  6. docker 删除所有未启动的容器_Docker数据卷容器及DockerFile

    一:介绍 什么是容器数据卷? 我们都知道,容器中是有数据的,如果我们将容器删除,数据就会丢失,就好比我们的MySQL服务容器,我们把容器删了,数据就没了,删库跑路都不用 rm -rf /* 命令的,所 ...

  7. 计算机毕业设计django基于python的宠物分享网站

    项目介绍 本论文主要论述了如何使用Python技术开发一个宠物分享网站,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述宠物分享网站的 ...

  8. 计算机毕业设计django基于python的宠物分享网站(源码+系统+mysql数据库+Lw文档)

    项目介绍 本论文主要论述了如何使用Python技术开发一个宠物分享网站,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述宠物分享网站的 ...

  9. Linux安装Docker容器环境centos中安装docker-compose容器编排dockerfile文件构建镜像(史上最详细的docker)

    在Linux系统下安装docker容器环境 1.容器介绍 1.1 镜像(Image) 镜像可以用来创建Docker 容器,Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像, 用户甚至可 ...

最新文章

  1. python中浅拷贝与深拷贝
  2. UVA 2474 - Balloons in a Box 爆搜
  3. VM安装虚拟机不能全屏解决
  4. scheduledexecutorservice 只执行一次_一个ScheduledExecutorService启动的Java线程无故挂掉引发的思考...
  5. java输出set中的元素_老师,为什么遍历Set集合里的元素,一直都是有序的输出呢?...
  6. 拼多多首届“非遗购物节”开幕 十一省市“非遗馆”入驻
  7. 猪肉价格屡创新高 也许AI养猪是时候提上日程了
  8. apache php 500,apache出现500错误的原因是什么
  9. 使用GDI+绘制高质量图和字体(2)
  10. Cartographer系列之三——ROS中的安装
  11. 素MM 详解(C++)
  12. webservice 视频教程 Spring+xfire 整合
  13. Android网络视频播放器DEMO
  14. 关于「数据分析师」的一些理解
  15. 嵌入式学习是什么?嵌入式开发入门教程带你了解
  16. 【杂学】ipv4无internet访问权限
  17. 2018第九届蓝桥杯B组决赛题解第四题 调手表
  18. ARM处理器对比分析
  19. 吉他指弹入门——日式指弹的pm技巧
  20. 单片机---HLK-W801移植Nes模拟器(一)

热门文章

  1. 富贵险中求?回顾AMD历次决策之是非对错(AMD授权中国生产x86之后)
  2. 【华为OD机试模拟题】用 C++ 实现 - 预订酒店(2023.Q1)
  3. 扇贝python课程打卡_Learning by doing——百日“扇贝打卡” 历程展望
  4. 使用prometheus监控服务器主机
  5. 优胜劣汰,WiFi会被5G淘汰吗?
  6. 暑假计算机培训心得体会,暑期培训心得体会模板集锦10篇
  7. Process Hacker 简单介绍
  8. SAP MR21修改标准价
  9. Matlab机器人的仿真(八):绘制机器人运动轨迹(复现)
  10. 培训班H5宣传单怎么做?快进来拿方案~