简介

* 1、两年前接触docker是因为要部署selenium_gird,后来呢发现zalenium可以录制ui自动化视频的工具,都是直接pull镜像,启动容器。所以一直以来就只用到了pull、 run、 rm等简单的命令。开发一直是把代码部署到docker里的,这对于我来说一直是个疑问。上周趁着项目不紧张 ,就来解惑以下,首先就把我二次开发的接口平台来部署下把(https://testerhome.com/topics/25144),忙碌了一周也终于部署到外网了,也在这里将简单好理解的部署方法分享给大家。

准备工作

* 1、首先 要有一台linux系统 ,笔者在这里选择了腾讯云的95一年的服务器,用来学习还不错(https://cloud.tencent.com/act/anniversary/product)

* 2、登录到linux系统后,下载docker 并启动(这步骤教给你们了,百度很多例子)

* 3、项目准备,我这里用到了后端django,前端vue

4、WinSCP用来将代码上传到linux(有很多途径可以上传,我这里选择了简单的方法)

5、https://www.cnblogs.com/jiefu/p/12204555.html docker部署 mysql请参考这个链接一步步配置就可以了,很简单哦(django要链接数据库)

部署django,文件目录如图

* 1、uWSGI是一种web服务器,是实现了uwsgi和WSGI两种协议的Web服务器,类似Apache和Ngin'x(https://blog.csdn.net/gymaisyl/article/details/85038932有详细的介绍)

2、Dockerfile用来创建镜像

3、我们之前启动django都是用python manage.py runserver 来启动的,这次我们uwsgi启动来部署到外网

4、我这边根目录是DockerProject,下面两个文件夹api_automation_test(代码),compose(docker-compose.yml,用来编排dockerfile的)

#### 每个文件的内容

* 1、Dockerfile内容,只需要替换api_automation_test项目目录名字即可

# 建立 python3.7 环境

FROM python:3.6

# 设置 python 环境变量

#ENV PYTHONUNBUFFERED 1

# 在容器内/var/www/html/下创建 mysite1文件夹

RUN mkdir -p /var/www/html/api_automation_test

# 设置容器内工作目录

WORKDIR /var/www/html/api_automation_test

# 将当前目录文件加入到容器工作目录中(. 表示当前宿主机目录)

ADD . /var/www/html/api_automation_test

#下载第三方包

RUN pip install https://github.com/darklow/django-suit/tarball/v2

RUN pip install -i https://pypi.doubanio.com/simple uwsgi

RUN pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt

# Windows环境下编写的start.sh每行命令结尾有多余的\r字符,需移除。

RUN sed -i 's/\r//' ./start.sh

# 设置start.sh文件可执行权限

RUN chmod +x ./start.sh

* 2、uwsgi_.ini内容,此处是对启动uwsgi做出的配置,更多配置参数可以去百度看下

[uwsgi]

#api_automation_test是我代码的路径

project = api_automation_test

uid = root

gid = root

base = /var/www/html

chdir = %(base)/%(project)

module = %(project).wsgi:application

master = True

processes = 2

http = 0.0.0.0:8020 #这里直接使用uwsgi做web服务器,使用http。如果使用nginx,需要使用socket沟通。

buffer-size = 65536

pidfile = /tmp/%(project)-master.pid

vacuum = True

max-requests = 5000

daemonize = uwsgi.log

# 解决APSchedler任务不能执行

threads=4

enable-threads = true

preload = true

lazy-apps = true

#设置一个请求的超时时间(秒),如果一个请求超过了这个时间,则请求被丢弃

harakiri = 60

#当一个请求被harakiri杀掉会,会输出一条日志

harakiri-verbose = true

* 3、start.sh内容

#!/bin/bash

# 从第一行到最后一行分别表示:

# 1. 生成数据库迁移文件

# 2. 根据数据库迁移文件来修改数据库

# 3. 用 uwsgi启动 django 服务, 不再使用python manage.py runserver

#python manage.py collectstatic --noinput&&

python manage.py makemigrations&&

python manage.py migrate&&

uwsgi --enable-threads /var/www/html/api_automation_test/uwsgi.ini

开始部署docker

* 1、首先将我们的代码用WinSCP放到linux上,cd 到我们的 api_automation_test目录

执行如下命令创建镜像,注意最后面有个点.

docker build -t django_web .

* 2、创建镜像中

* 3、创建完成

* 4、docker images查看我们刚才创建的镜像

* 5、 启动容器

docker run -it --name MyDjango -p 8020:8020 -d django_web

* 6、 查看创建成功的容器

docker ps

* 7、进入容器内部执行shart.sh

docker exec -it MyDjango /bin/bash

sh start.sh

7、这个时候我们后端项目已启动成功,接下来访问下接口

部署vue,项目结构如图所示

1、Dockerfile内容,直接copy不用改内容

# nginx镜像

FROM nginx:latest

# 删除原有配置文件,创建静态资源文件夹和ssl证书保存文件夹

RUN rm /etc/nginx/conf.d/default.conf \

&& mkdir -p /usr/share/nginx/html/static \

&& mkdir -p /usr/share/nginx/html/media \

&& mkdir -p /usr/share/nginx/ssl

COPY dist/ /usr/share/nginx/html/

# 添加配置文件

COPY nginx.conf /etc/nginx/nginx.conf

# 构建镜像时执行的命令

RUN echo 'echo init ok!'

2、cd到frontend文件夹下,创建镜像

docker build -t vue_web .

3、启动容器

docker run -it -p 80:80 --name vue_web_c \

-d vue_web

4、至此前后端都已启动成功

注:

1、后续会再讲下如何用compose一键创建多个镜像、启动多个镜像,这样我们部署就会更方便

2、有疑问可以加我微信咨询哦liuxiaolu4986

python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue相关推荐

  1. java应用部署docker_Docker部署JavaWeb项目实战

    摘要:本文主要讲了怎样在Ubuntu14.04 64位系统下来创建一个执行Java web应用程序的Docker容器. 一.下载镜像.启动容器 1.下载镜像 先查看镜像 docker images 记 ...

  2. 如何让nginx执行python代码_生产环境部署Python语言代码(django+uwsgi+nginx)

    本文主要向大家介绍了生产环境部署Python语言代码(django+uwsgi+nginx),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 基础环境不做介绍,在django开发w ...

  3. python django + uwsgi+Nginx宝塔centos7的部署方案

    python django的centos7部署 第一步:准备环境 1.准备centos7服务器 服务器可自行购买 2.安装宝塔Linux面板 Centos安装命令: yum install -y wg ...

  4. Django+Linux+Uwsgi+Nginx项目部署文档

    Django+Linux+Uwsgi+Nginx项目部署文档 WSGI 在生产环境中使用WSGI作为python web的服务器 WSGI:全拼为Python Web服务器网关接口,Python We ...

  5. Django + Uwsgi + Nginx 的生产环境部署项目知识点

    什么是WSGI: WSGI是一种python专用的web协议 和http类似 WSGI是一种规范,它定义了使用python编写的web app(django)与web server(uWSGI)之间接 ...

  6. 部署Django到云服务器(centos+nginx+mysql+uwsgi+python3)【操作篇(1)】

    开篇 笛卡尔说:"你不能教会一个人任何东西,你只能帮助他发现他自己内心本来就有的东西!" jacky能教你的,只能是经验和建议,要逆袭还得通过自己对数据的不断领悟,数据领域的技能都 ...

  7. uwsgi+nginx部署django项目(有图原理的详细展示的)

    1. 概念解析(wsgi协议,uwsgi协议,uWSGI) 参考:https://www.cnblogs.com/wspblog/p/8575101.html 1.1 现实世界的web请求: 1.2  ...

  8. uWSGI + Nginx + Django 部署

    来源:https://www.cnblogs.com/midworld/p/10992005.html 1. uWSGI 服务器 Django 默认使用 WSGI(Python Web Server ...

  9. django+uwsgi+nginx部署

    最近线上部署运维工单系统,使用django+uwsgi+nginx部署,发现这篇文章,很详细,觉得不错,转载一下: 写了那么长时间的django,一直没跟nginx结合一下,访问的时候老是得加端口号, ...

最新文章

  1. mac上的终端bash命令
  2. python中json和字典相互转化
  3. vue使用px2rem
  4. 问题集录--如何本地调试微信接口(未测试)
  5. 手动设计简单的Token验证
  6. 关于MVC框架和spring
  7. HTML/CSS/动画
  8. java 7.函数-递归_带有谓词的Java中的函数样式-第2部分
  9. yiilite.php,缓存 - yii在哪些情况下可以加载yiilite.php?
  10. Android应用开发——文件目录
  11. selenium截取验证码图片
  12. 主库创建存储过程时从库显示 Error 1049
  13. lintcode-137-克隆图
  14. 值得推荐的C/C++开源框架和库
  15. 钉钉企业内部H5微应用开发
  16. 在windows7中安装了office了
  17. linux备份mysql数据库
  18. photo的复数是photos
  19. 二极管对LDO的保护
  20. EDK II之USB主控制器(EHCI)驱动的实现框架

热门文章

  1. [转]深入理解 __doPostBack
  2. 用神经网络逼近一个无穷级数
  3. java ios websocket_Java WebSocket的例子
  4. 如何配置php的ip地址吗,如何手动配置IP地址及防火墙设置
  5. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第2章-连通性保持条件下多智能体系统群集运动控制
  6. 基于FPGA的AES加解密读写控制系统,实现FLASH内部读写内容的销毁功能
  7. C1之路 | 训练任务02-网络
  8. Python----Requests库基本使用
  9. 不同项目配置不同的 Git 账号
  10. 解决Sublime包管理package control 报错 There are no packages available for installation