Dockerfile封裝Django鏡像


部署過程

1.查看鏡像

docker images

 

2.在/opt下建立了docker目錄,下載一個django-2.1.7的源碼包,

mkdir  -p /opt/docker

cd /docker

該  /opt/docker 文件夾需要用到 的文件如下,django文件需要下載  ,epel.repo 需要從阿里雲進行下載,Dockerfile和run.sh 需要自己寫

在該目錄下載阿里雲擴展源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

vim  Dockerfile和run.sh,其中run.sh是用來執行Django的bash腳本,Dockerfile即為自動build python的文件,此文中的核心也是Dockerfile.

3.編寫Dockerfile

vim  Dockerfile

寫入以下配置:

FROM centos
MAINTAINER TigerLee

ADD epel.repo /etc/yum.repos.d
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 qishi3dj

ADD run.sh /opt/qishi3dj/run.sh
WORKDIR /opt/qishi3dj
RUN chmod 777 run.sh
EXPOSE 8000
CMD ["/bin/sh","run.sh"]
簡潔配置

配置說明:

FROM centos
MAINTAINER TigerLee  # 名字可自定義

ADD epel.repo /etc/yum.repos.d  # 將當前目錄的epel.repo文件拷貝到容器的/etc/yum.repos.d目錄下   ADD相當於 copy+解壓
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目錄    # WORKDIR 相當於cd命令
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 qishi3dj  # 創建的django項目

ADD run.sh /opt/qishi3dj/run.sh  # 復制文件到某個目錄
WORKDIR /opt/qishi3dj
RUN chmod 777 run.sh   # 修改文件權限 ,可執行
EXPOSE 8000  # 聲明容器端口
CMD ["/bin/sh","run.sh"]  # 容器啟動時默認執行的命令

4.編寫run.sh

python3 manage.py runserver 0.0.0.0:8000

開始構建

打包為鏡像

 sudo docker build -t deng/django217 .

查看鏡像

docker images

此時后台啟動鏡像,並把8000端口映射出來

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

docker run -d -p 9000:8000 bba0c98 
docker container ls

 

 

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

docker exec -t 6bc57de7f8e8 /bin/bash
ps -ef 

 

進入容器內,修改django配置文件

瀏覽器地址欄訪問 192.168.12.80:9000,如果訪問失敗的話,可能是服務器的防火牆導致的,需要關閉防火牆。

setenforce  0
iptables -F 清空防火牆規則
systemctl  disable  firewalld

 

 

 

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

docker logs -f container_id

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM