zoukankan      html  css  js  c++  java
  • dockerfile

    使用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"]  # 容器启动时默认执行的命令
    编写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"]  # 容器启动时默认执行的命令
    详细配置
    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"]
    
    简洁配置
    简洁配置

    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 参数  指定地址和文件名   镜像名

  • 相关阅读:
    如何根据w3wp.exe的进程pid查看是哪个应用程序池
    Wpf从资源中重用UI元素
    Project not selected to build for this solution configuration.
    wpf 只在window是ShowDialog打开时才设置DialogResult
    Stop a hung service 关闭一个无响应的windows 服务
    调用windows api 获取系统分辨率
    PHP7中session_start 使用注意事项,会导致浏览器刷时页面数据不更新
    form表单清空、重置
    php用户注册常用检测、写入
    搜索条件两个时间,通过php数组排序,保证select语句between时间 前小后大
  • 原文地址:https://www.cnblogs.com/wpnr/p/11949072.html
Copyright © 2011-2022 走看看