5.零基础快速入门Python Web开发——项目部署之单容器部署案例

一、单容器部署

1.1 案例

准备工作:下载docker(docker版本必须在2.0以上)

创建一个名为mysite1的Django项目,并修改settings.py

ALLOWED_HOSTS = ['*']

requirements.txt

django

pip.conf

[global] index-url = https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com
  1. 编写Dockerfile
FROM python:3.7

MAINTAINER Aaron

#设置环境变量
ENV PYTHONUNBUFFERED 1

#设置pip源为国内源
COPY pip.conf /root/.pip/pip.conf

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

#设置容器内工作目录
WORKDIR /var/www/html/mysite1

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

#利用pip安装依赖
RUN pip install -r requirements.txt
#启动的时候执行python manage.py runserver命令启动django项目
CMD ["python", "manage.py", "runserver", "0.0.0.0:80"]

2. 利用Dockerfile创建镜像

# 创建名为django_docker_img的镜像,版本为v1
sudo docker build -t django_docker_img:v1 .

# 查看创建的镜像
[root@hdp01 firstweb]# docker images
REPOSITORY                      TAG                              IMAGE ID       CREATED         SIZE
django_docker_img               v2                               417962c7a44d   7 minutes ago   1.04GB
django_docker_img               v1                               f1e8aa9164c8   5 hours ago     1.04GB

3.利用镜像生成容器并后台运行,容器名为mysite1 (80:80这边很重要 本地端口必须和dockerfile一致)

 sudo docker run -it -d --name mysite1 -p 80:80 django_docker_img:v1

# 查看所有容器状态
[root@hdp01 firstweb]# docker ps
CONTAINER ID   IMAGE                  COMMAND                   CREATED                                                                           STATUS             PORTS                                       NAMES
f886ff99b3a6   django_docker_img:v2   "python manage.py ru…"   5 minutes ago                                                                     Up 5 minutes       0.0.0.0:80->80/tcp, :::80->80/tcp           mysite2
1db41c853d8a   django_docker_img:v1   "python3"                 3 hours ago                                                                       Up About an hour   0.0.0.0:8080->8000/tcp, :::8080->8000/tcp   firstweb

4.进入容器

sudo docker exec -it mysite1 /bin/bash

5.执行如下操作

python3 manage.py make migrations
python3 manage.py migrate

测试:虚拟机登陆网站查看 0.0.0.0:80

主机登录虚拟机ip:80查看(192.168.33.135:80)

易错点解决方案:

当Docker运行碰上“连接被重置”_docker the connection was reset-CSDN博客

1.2 练习

1.将market项目放到/home/bu文件夹下

将requirements.txt文件夹内所有组件的版本号全部删除,修改如下

asgiref
click
colorama
cycler
Django
django-simpleui
django-tinymce
django-utils-six
et-xmlfile
Flask
fonttools
itsdangerous
Jinja2
kiwisolver
MarkupSafe
matplotlib
numpy
openpyxl
packaging
pandas
Pillow
pyparsing
python-dateutil
pytz
six
sqlparse
terminaltables
tzdata
Werkzeug

添加如下文件:

pip.conf

[global]
 index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
 trusted-host=mirrors.aliyun.com
  1. 编写Dockerfile
    FROM python:3.7
    
    MAINTAINER Aaron
    
    #设置环境变量
    ENV PYTHONUNBUFFERED 1
    
    #设置pip源为国内源
    COPY pip.conf /root/.pip/pip.conf
    
    #在容器内/var/www/html/下创建mysite1文件夹
    RUN mkdir -p /var/www/html/mysite1
    
    #设置容器内工作目录
    WORKDIR /var/www/html/mysite1
    
    #将当前目录文件加入到容器工作目录中(.表示当前宿主机目录)
    ADD . /var/www/html/mysite1
    
    #利用pip安装依赖
    RUN pip install -r requirements.txt
    #启动的时候执行python manage.py runserver命令启动django项目
    CMD ["python", "manage.py", "runserver", "0.0.0.0:80"]

  2. 利用Dockerfile创建镜像

    # 创建名为django_docker_img的镜像,版本为v1
    sudo docker build -t django_docker_img:v1 .
    
    # 查看创建的镜像
    [root@hdp01 firstweb]# docker images
    REPOSITORY                      TAG                              IMAGE ID       CREATED         SIZE
    
    django_docker_img               v1                               f1e8aa9164c8   5 hours ago     1.04GB
    

  3. 利用镜像生成容器并后台运行,容器名为mysite1 (80:80这边很重要 本地端口必须和dockerfile一致)

     sudo docker run -it -d --name mysite1 -p 80:80 django_docker_img:v1
    
    # 查看所有容器状态
    [root@hdp01 firstweb]# docker ps
    CONTAINER ID   IMAGE                  COMMAND                   CREATED                                                                           STATUS             PORTS                                       NAMES
    f886ff99b3a6   django_docker_img:v2   "python manage.py ru…"   5 minutes ago                                                                     Up 5 minutes       0.0.0.0:80->80/tcp, :::80->80/tcp           mysite2
    1db41c853d8a   django_docker_img:v1   "python3"                 3 hours ago                                                                       Up About an hour   0.0.0.0:8080->8000/tcp, :::8080->8000/tcp   firstweb
    

  4. 进入容器

    sudo docker exec -it mysite1 /bin/bash

  5. 数据库数据更新

    python3 manage.py make migrations
    python3 manage.py migrate
    

    测试:虚拟机登陆网站查看 0.0.0.0:80

    主机登录虚拟机ip:80查看(192.168.33.135:80)

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值