Dockerfile 部署Djano项目

一:查看镜像

[root@izbp1hvzt7nfcuwkx6shc9z ~]# docker image ls 

在这里插入图片描述

二:在/opt下建立了docker目录,下载一个django-2.1.7的源码包

touch Dockerfile和run.sh,其中run.sh是用来执行Django的bash脚本,Dockerfile即为自动build python的文件,此文中的核心也是Dockerfile.
下载阿里云扩展源epel.repo文件,也放在此目录

[root@izbp1hvzt7nfcuwkx6shc9z ~]# cd /opt
[root@izbp1hvzt7nfcuwkx6shc9z opt]# mkdir docker
[root@izbp1hvzt7nfcuwkx6shc9z opt]# ls
containerd  docker

在这里插入图片描述
下载阿里云扩展源epel.repo文件,也放在此目录

wget https://media.djangoproject.com/releases/2.1/Django-2.1.7.tar.gz
wget -O epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
cp /etc/yum.repos.d/CentOS-Base.repo /opt/docker

下载完如图所示(框中为配置文件之后出现的)
在这里插入图片描述

三:编写Dockerfile (任选一种)

[root@izbp1hvzt7nfcuwkx6shc9z docker]# vim Dockerfile

通用版

FROM centos
FROM python:3.6.6

ADD CentOS-Base.repo /etc/yum.repos.d
ADD epel.repo /etc/yum.repos.d

RUN pip3 install setuptools
ADD Django-2.1.7.tar.gz /opt/

WORKDIR /opt/
RUN mv Django-2.1.7 django

WORKDIR /opt/django
RUN python3 setup.py install

WORKDIR /opt
RUN django-admin.py startproject qishidj

ADD run.sh /opt/qishidj/run.sh
RUN sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = \['\*'\]/g" /opt/qishidj/qishidj/settings.py
WORKDIR /opt/qishidj
RUN chmod 777 run.sh
EXPOSE 8000
CMD ["/bin/sh","run.sh"]

简化版

FROM centos
MAINTAINER TigerLee

ADD CentOS-Base.repo /etc/yum.repos.d
ADD epel.repo /etc/yum.repos.d
RUN yum clean all
RUN yum makecache
RUN yum update -y

RUN yum install -y python36
RUN yum install -y python36-pip
RUN pip3 install setuptools
ADD Django-2.1.7.tar.gz /opt/

WORKDIR /opt/
RUN mv Django-2.1.7 django

WORKDIR /opt/django
RUN python3 setup.py install

WORKDIR /opt
RUN django-admin.py startproject qishidj

ADD run.sh /opt/qishidj/run.sh
RUN sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = \['\*'\]/g" /opt/qishidj/qishidj/settings.py
WORKDIR /opt/qishidj
RUN chmod 777 run.sh
EXPOSE 8000
CMD ["/bin/sh","run.sh"]

详细版

FROM centos
MAINTAINER TigerLee

ADD CentOS-Base.repo /etc/yum.repos.d
ADD epel.repo /etc/yum.repos.d  # 将当前目录的epel.repo文件拷贝到容器的/etc/yum.repos.d目录下
RUN yum clean all
RUN yum makecache
RUN yum update -y  # 运行命令

RUN yum install -y python36
RUN yum install -y python36-pip
RUN pip3 install setuptools
ADD Django-2.1.7.tar.gz /opt/

WORKDIR /opt/  # 进入/opt目录
RUN mv Django-2.1.7 django  # 运行命令mv

WORKDIR /opt/django    # 进入/opt/django目录
RUN python3 setup.py install

WORKDIR /opt
RUN django-admin.py startproject qishidj

ADD run.sh /opt/qishidj/run.sh
RUN sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = \['\*'\]/g" /opt/qishidj/qishidj/settings.py
WORKDIR /opt/qishidj
RUN chmod 777 run.sh
EXPOSE 8000  # 声明容器端口
CMD ["/bin/sh","run.sh"]  # 容器启动时默认执行的命令

四:编写run.sh

[root@izbp1hvzt7nfcuwkx6shc9z docker]# vim run.sh
python3 manage.py runserver 0.0.0.0:8000

开始构建

[root@tiger docker]# sudo docker build -t tiger/django-217 .

构建完成后,可以看到生成一个新镜像:
在这里插入图片描述

此时后台启动镜像,并把8000端口映射出来

[root@tiger docker]# docker run -d -p 9090:8000  tiger/django-217

在这里插入图片描述

查看容器运行状态:

[root@izbp1hvzt7nfcuwkx6shc9z docker]# docker ps

在这里插入图片描述

使用交互式模式进入容器,再使用ps -ef查看运行的进程

进入容器的交互模式必须先将镜像运行后产生一个容器
先运行镜像并使其后台持续运行:
[root@node22 docker]# docker run -d -i -t fdf959b9d490 /bin/bash
2b2b8dbcb3794da9a244a9f453e10502b15ce30d1ee0dbd21274f2ed1dc882b4
然后再执行命令行进入容器交互模式:
[root@tom docker]# docker exec -it 7df248de02f3(容器id) /bin/bash

在这里插入图片描述

[root@izbp1hvzt7nfcuwkx6shc9z docker]# docker ps

在这里插入图片描述

五:使用和调试

执行完以上的步骤,已经可以使用这个封装了django的镜像,接下来查看一下登陆界面
在这里插入图片描述

发布了75 篇原创文章 · 获赞 62 · 访问量 4666

猜你喜欢

转载自blog.csdn.net/weixin_45139342/article/details/104720389