我的编程空间,编程开发者的网络收藏夹
学习永远不晚

docker 运行Django项目

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

docker 运行Django项目

已经写好了一个Django项目,需要将这个项目用docker封装一个镜像,使用k8s发布!

在封装并运行的过程中,发现了很多问题,这里会一一介绍!

 

采用的是镜像是 ubuntu:16.04 默认的时区是UTC,比中国时间,晚了8个小时!

那么因此,需要将默认的时区给覆盖掉!

 

默认是没有安装 tzdata,因此没有 /usr/share/zoneinfo 目录!

安装tzdata,使用命令

apt-get install -y tzdata

 设置时区为 上海,使用以下命令

TZ=Asia/Shanghai
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

默认的系统编码是ascii,因此不支持中文!

需要安装 locales 软件包

apt-get install -y locales

 

设置utf-8编码

locale-gen en_US.UTF-8

设置全局变量

LANG en_US.UTF-8
LANGUAGE en_US:en
LC_ALL en_US.UTF-8

设置utf-8编码之后,那么在python的print命令,就可以输出中文了,而不会提示

'ascii' codec can't encode characters in position 8-50: ordinal not in range(128)

在python文件头部,记得增加一行代码,指定utf-8编码

# coding: utf-8

启动问题

在ubuntu:16.04 的镜像中,默认是没有cron包的,所以需要手动安装

apt-get install -y cron

那么启动任务计划时,不能使用命令 /etc/init.d/cron start 以及 service cron start

在dockerfile中,会启动不成功的。

必须使用 /usr/sbin/cron 命令,才能启动成功!

 

添加问题

一般来讲,添加任务计划,直接修改 /etc/crontab 文件即可。

在dockerfile 中,不能使用echo EOF 等命令修改/etc/crontab文件

必须使用 sed 命令修改/etc/crontab文件,才能成功!

如果需要在最后一行添加任务计划,可以使用以下命令:

语法:

sed -i '$a需要添加的内容' 文件名


比如:

sed -i '$a* * * * * root python3 /messagecenter/cron/voc_receipt.py' /etc/crontab

 新建空目录

mkdir /opt/messagecenter

目录结构如下:

./
├── dockerfile
├── messagecenter.tar
├── run.sh
└── sources.list

dockerfile

FROM ubuntu:16.04
# 修改更新源为阿里云
ADD sources.list /etc/apt/sources.list
ADD messagecenter.tar /
# 时区为上海
ENV TZ Asia/Shanghai

# 设置时区,设置utf-8编码,安装django,添加任务计划
RUN apt-get update && apt-get install -y tzdata locales python3-pip cron && apt-get clean all && \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
    locale-gen en_US.UTF-8 && \
    pip3 install django requests

# 解决中文乱码问题
#RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

EXPOSE 8000
# 添加启动脚本
ADD run.sh .
RUN chmod 755 run.sh
ENTRYPOINT [ "/run.sh"]

messagecenter.tar  这个是Django项目,已经打成tar包了。在dockerfile中,执行ADD命令时,会自动解压tar包

 

run.sh

#!/bin/bash

# 启动任务计划
/usr/sbin/cron

# 最后一行增加任务计划
sed -i '$a* * * * * root python3 /messagecenter/cron/voc_receipt.py' /etc/crontab

# 启动django项目
cd /messagecenter/
python3 manage.py runserver 0.0.0.0:8000

在Django项目中,有一个python脚本,需要每分钟执行一次!

 

sources.list

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse

生成镜像

docker build -t messagecenter /opt/messagecenter

启动镜像

docker run -d -it -p 8000:8000 messagecenter

访问页面:

http://192.168.0.162:8000

就可以访问Django的默认页面了!

 


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

docker 运行Django项目

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

docker 运行Django项目

已经写好了一个Django项目,需要将这个项目用docker封装一个镜像,使用k8s发布!在封装并运行的过程中,发现了很多问题,这里会一一介绍!采用的是镜像是ubuntu:16.04默认的时区是UTC,比中国时间,晚了8个小时!那么因此,需
2023-01-31

用pycharm运行django项目

【点击】run -> Edit Configrations 弹出如下页面点击“+”点击Django server在弹出页面的host填0.0.0.0点击这个“文件夹”点击‘+’后填下面的文字然后就一直点OK键就好啦!!!接下来就是运行出现下
2023-01-30

pycharm运行Django项目,提示

确认pycharm编码都是utf-8的情况下,需要修改项目中settings.py'DIRS': [ ],默认是空,将路径加入即可解决。TEMPLATES = [ { 'BACKEND': 'django.templat
2023-01-31

pycharm如何运行django项目

如何在 pycharm 中运行 django 项目?创建 django 项目(选择 python 和 django 模板)。配置 django 项目(启用调试模式,添加允许主机)。创建运行配置(django 服务器,指定名称、主机、端口)。
pycharm如何运行django项目
2024-04-25

Docker实战之运行项目

在本篇文章里小编给大家分享的是关于docker运行项目的方法和实例,需要的朋友们学习参考下。1、进入存放自己项目war的目录
2023-06-04

docker怎么部署django项目

要部署Django项目,可以使用Docker进行容器化部署。以下是一些基本的步骤:1. 首先,确保已经在本地安装了Docker和Docker Compose。2. 在你的Django项目根目录下,创建一个名为`Dockerfile`的文件,
2023-10-09

Docker中怎么配置Tomcat并运行web项目

这篇文章主要讲解了“Docker中怎么配置Tomcat并运行web项目”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Docker中怎么配置Tomcat并运行web项目”吧!一、安装Tomca
2023-06-27

在django项目中怎么单独运行某个python文件

这篇文章给大家分享的是有关在django项目中怎么单独运行某个python文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。go是什么golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直
2023-06-14

怎么使用Docker组件开发Django项目

本篇内容主要讲解“怎么使用Docker组件开发Django项目”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Docker组件开发Django项目”吧!Docker 是一个开源的应用容器引
2023-06-19

myeclipse怎么运行项目

myeclipse怎么运行项目?打开MyEclipse的页面,看图右键项目,打开右键菜单列表,看图按下 Debug as/Run as,打开列表来,看图按下MyEclipse server application,打开server selection页面,选中
myeclipse怎么运行项目
2017-11-06

怎么运行vue项目

本篇内容主要讲解“怎么运行vue项目”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么运行vue项目”吧!一、运行vue项目1、下载node.js安装完成后分别在cmd中执行node -v查看是
2023-07-01

eclipse怎么运行项目

eclipse怎么运行项目?eclipse运行项目的方法:首先选中需要运行的Java类文件;然后右键,选择“Run As”,选择并点击“Java Application”即可。 见下图Java程序代码以及运行结果:推荐:《Java教程》
eclipse怎么运行项目
2015-07-14

ubuntu16.04在python3 下创建Django项目并运行的操作方法

第一步:创建django项目打开终端,切换到期望所写项目的地址:cd python3_django_projects;输入命令:django-admin.py startproject Hello;(即创建好了一个名为Hello的项目) 第
2022-06-04

vue前端项目打包成Docker镜像并运行的实现

这篇文章主要介绍了vue前端项目打包成Docker镜像并运行的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录