dockerfile 使用Dockerfile封装Django镜像

使用Dockerfile封装Django镜像

 

部署过程

1.查看镜像

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
centos                    latest              9f38484d220f        3 weeks ago         202MB

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

touch Dockerfile和run.sh,其中run.sh是用来执行Django的bash脚本,Dockerfile即为自动build python的文件,此文中的核心也是Dockerfile.

下载阿里云扩展源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

3.编写Dockerfile

复制代码
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"] # 容器启动时默认执行的命令
复制代码
  简洁配置

4.编写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

查看容器运行状态:

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

[root@tiger docker]# docker exec -it e0d /bin/bash
[root@e0d0a2164341 qishidj]# ps -ef 

使用和调试

执行完以上四个步骤,已经可以使用这个封装了django的镜像,接下来查看一下登陆界面

如果需要查看log日志,可以使用如下命令,-f代表持续打印:

docker logs -f container_id

如果需要进入容器修改web内容,可以通过docker exec命令进入,前文已有类似说明,不多说。

导出镜像

[root@tiger docker]# docker save -o centos_django217.tar.gz tiger/django-217
      -o 参数  指定地址和文件名   镜像名

部署过程

1.查看镜像

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
centos                    latest              9f38484d220f        3 weeks ago         202MB

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

touch Dockerfile和run.sh,其中run.sh是用来执行Django的bash脚本,Dockerfile即为自动build python的文件,此文中的核心也是Dockerfile.

下载阿里云扩展源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

3.编写Dockerfile

复制代码
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"] # 容器启动时默认执行的命令
复制代码
  简洁配置

4.编写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

查看容器运行状态:

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

[root@tiger docker]# docker exec -it e0d /bin/bash
[root@e0d0a2164341 qishidj]# ps -ef 

使用和调试

执行完以上四个步骤,已经可以使用这个封装了django的镜像,接下来查看一下登陆界面

如果需要查看log日志,可以使用如下命令,-f代表持续打印:

docker logs -f container_id

如果需要进入容器修改web内容,可以通过docker exec命令进入,前文已有类似说明,不多说。

导出镜像

[root@tiger docker]# docker save -o centos_django217.tar.gz tiger/django-217
      -o 参数  指定地址和文件名   镜像名

猜你喜欢

转载自www.cnblogs.com/wpnr/p/11949072.html
今日推荐