Docker項目上線 Django+uwsgi+Nignx

項目目錄

Dockerfile:

FROM python:3.6
# 工作目錄
WORKDIR /home/

# apt的換源
RUN echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list
# 更新apt
RUN apt-get update -y
# 安裝nginx
RUN apt-get install -y nginx

# pip換源
# 創建源pip文件夾
RUN mkdir -p ~/.pip/
RUN echo  "[global]" >  ~/.pip/pip.conf
RUN echo "index-url = https://pypi.tuna.tsinghua.edu.cn/simple" >> ~/.pip/pip.conf

# 將項目放入鏡像的home目錄下
ADD xxx/ /home/xxx/
# 配置nginx, 將項目中的編寫的mynginx文件移動到 /etc/nginx/nginx.conf
RUN mv /home/xxx/mynignx /etc/nginx/nginx.conf
# 安裝項目依賴
RUN pip install -r /home/xxx/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# 暴露80端口,nginx需要轉接
EXPOSE 80
# 啓動nginx和uwsgi
CMD nginx &&  uwsgi -x /home/xxx/uwsgi.xml

mynginx

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80; # 轉接80端口的請求
        server_name 0.0.0.0:8888; # 本地服務端口
        charset utf-//8;
        location / {
           include uwsgi_params;
           uwsgi_pass 0.0.0.0:8888;  # 端口要和uwsgi裏配置的一樣
           uwsgi_param UWSGI_SCRIPT xxx.wsgi;  #wsgi.py所在的目錄名+.wsgi
           uwsgi_param UWSGI_CHDIR /home/xxx/; # 項目路徑
        }
    }
}

uwsgi.xml


<uwsgi>
   <socket>0.0.0.0:8888</socket> <!-- 內部端口,自定義 -->
   <chdir>/home/xxx/</chdir> <!-- 項目路徑 -->
   <module>xxx.wsgi</module>  <!-- test_site爲wsgi.py所在目錄名-->
   <processes>4</processes> <!-- 進程數 -->
</uwsgi>

執行命令:

docker build .
docker run -itd -p 8885:80 鏡像ID

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章