項目目錄
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