部署過程
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