一、单容器部署
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
- 编写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
- 编写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"]
-
利用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
-
利用镜像生成容器并后台运行,容器名为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
-
进入容器
sudo docker exec -it mysite1 /bin/bash
-
数据库数据更新
python3 manage.py make migrations python3 manage.py migrate
测试:虚拟机登陆网站查看 0.0.0.0:80
主机登录虚拟机ip:80查看(192.168.33.135:80)