学习目标: 应用 Dockerfile的生产使用流程 应用 Dockerfile定制web项目镜像
项目描述
django官方网站:https://code.djangoproject.com/ 基于我们在shell自动化运维课程中的项目案例,我们现在来使用Dockerfile做一个Docker镜像。手工部署django项目环境
这一节,我们从需求、方案分析、技术关键点、方案、方案实施这五个方面来学习。 需求: 基于docker镜像,手工部署django项目环境 方案分析: 1、docker环境部署 2、django环境部署 3、djanog项目部署 4、测试 技术关键点: 1、docker环境部署 使用docker镜像启动一个容器即可 2、django环境部署 django软件的依赖环境 django软件的基本环境配置 3、django项目部署 django框架的下载 项目文件配置 启动django项目 4、测试 宿主机测试 解决方案: 1、docker环境配置 1.1 获取docker镜像 1.2 启动docker容器 2、django环境部署 2.1 基础环境配置 2.2 django环境配置 3、django项目部署 3.1 创建django项目 3.2 创建django应用 3.3 项目启动 4、测试 4.1 宿主机测试 方案实施: 1、docker环境配置 1.1 获取docker镜像 ubuntu-ssh 1.2 启动docker容器 启动容器,容器名称叫 django docker run -d -p 10086:22 --name django ubuntu-ssh 进入容器 ssh 192.168.8.14 -p 10086 2、django环境部署 2.1 基础环境配置 基础目录环境 mkdir /data/{server,softs} -p cd /data/softs scp root@192.168.8.14:/data/softs/Django-2.1.2.tar.gz ./ 注意: 因为我们的docker镜像就是唯一的,所以就没有必要单独创建python虚拟环境了 2.2 django环境配置 安装基本依赖软件 apt-get install python3-pip -y 安装django软件 cd /data/softs tar xf Django-2.1.2.tar.gz cd Django-2.1.2 python3 setup.py install 3、django项目部署 3.1 创建django项目 创建项目 cd /data/server django-admin startproject itcast 3.2 创建django应用 创建应用 cd /data/server/itcast python3 manage.py startapp test1 注册应用 # vim itcast/settings.py INSTALL_APP = [ 。。。 'test1', ] 配置应用 admin-1@ubuntu:/data/soft# cat /data/server/itcast/test1/views.py from django.shortcuts import render from django.http import HttpResponse # Create your views here. def hello(resquest): return HttpResponse("itcast V1.0") url文件配置 admin-1@ubuntu:/data/soft# cat /data/server/itcast/itcast/urls.py ... from test1.views import * urlpatterns = [ path('admin/', admin.site.urls), path('hello/', hello), ] 3.3 项目启动 设置访问主机 # vim itcast/settings.py ... ALLOWED_HOSTS = ['*'] 启动项目 python3 manage.py runserver 172.17.0.2:8000 注意: 要提前用ifconfig来检查一下当前容器的IP地址,以方面接下来的测试 4、测试 4.1宿主机测试 查看容器的ip地址 docker inspect django 浏览器、或curl查看效果: 172.17.0.2:8000/hello/Dockerfile案例实践
这一节,我们从环境分析、关键点分析、定制方案、Dockerfile实践这三个方面来学习 环境分析: 1、软件源文件,使用国外源,速度太慢,所以我们可以自己使用国内的软件源。 因为我们在手工部署的时候,使用的是官方(国外)的源,所以为了部署快一点呢,我使用国内的源。 2、软件安装,涉及到了各种软件 3、软件运行涉及到了软件的运行目录 4、项目访问,涉及到端口 关键点分析: 1、增加文件,使用 ADD 或者 COPY 指令 2、安装软件,使用 RUN 指令 3、命令运行,使用 WORKDIR 指令 4、项目端口,使用 EXPOSE 指令 5、容器运行,使用 ENTRYPOINT 定制方案: 1、基于ubuntu-ssh基础镜像进行操作 2、安装环境基本软件 3、定制命令工作目录,并增加文件 4、开放端口 5、执行项目 Dockerfile定制 进入标准目录 mkdir /docker/images/django -p cd /docker/images/django 第一版dockerfile内容 # 构建一个基于ubuntu的docker定制镜像 # 基础镜像 FROM ubuntu-ssh # 镜像作者 MAINTAINER President.Wang 000000@qq.com # 执行命令 RUN apt-get install python3-pip -y # 增加文件 ADD Django-2.1.2.tar.gz /data/softs/ WORKDIR /data/softs/Django-2.1.2 RUN python3 setup.py install # 创建项目 WORKDIR /data/server RUN django-admin startproject itcast # 创建应用 WORKDIR /data/server/itcast RUN python3 manage.py startapp test1 RUN sed -i "/staticfiles/a\ 'test1'," itcast/settings.py # 配置应用 COPY views.py /data/server/itcast/test1/ RUN sed -i '/t p/a\from test1.views import *' itcast/urls.py RUN sed -i "/\]/i\ path('hello/', hello)," itcast/urls.py # 启动项目 RUN sed -i "s#S = \[\]#S = \['*'\]#" itcast/settings.py # 对外端口 EXPOSE 8000 # 运行项目 ENTRYPOINT ["python3","manage.py","runserver","0.0.0.0:8000"] 把Django-2.1.2.tar.gz和views.py文件放到这个目录中 效果查看 构建镜像 docker build -t ubuntu-django . 运行镜像 docker run -p 8000:8000 -d ubuntu-django 访问镜像,查看效果