IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django应用容器封装DockerFile分享 -> 正文阅读

[Python知识库]Django应用容器封装DockerFile分享

最近使用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=noninteractive

RUN 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 -y

RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python3.9 get-pip.py

WORKDIR /project_web
ENV RUN_PORT=xxxx
ENV DATABASE_HOST='x.x.x.x'
ENV DATABASE_PORT='xxxx'
EXPOSE $RUN_PORT

ADD . /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。

文章如有误,请指正。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:19:02  更:2022-07-17 16:19:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:13:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码