基于配好python3环境的容器部署
一、运行镜像进入容器内部
docker run -it <镜像id>
二、将项目cp到容器内
# 服务器内
docker cp <项目> <容器id>: <路径>
三、配置uwsgi
项目根目录配置uwsgi:填入下方内容
项目路径:root/<项目>
<uwsgi>
<socket>127.0.0.1:8808</socket> <!-- 内部端口,自定义 -->
<chdir>/root/dialog_core</chdir> <!-- 项目路径 -->
<module>dialog_core.wsgi</module> <!-- test_site为wsgi.py所在目录名-->
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>
四、修改项目的settings文件
DEBUG = False
ALLOWED_HOSTS = ['*']
五、配置nginx
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vi nginx.conf
# 清除掉全部
ggdG
编辑
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8808;
uwsgi_param UWSGI_SCRIPT dialog_core.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /root/dialog_core/; # 项目路径
}
}
}
六、启动uwsgi
uwsgi -x /root/dialog_core/dialog_core.xml
# 关闭uwsgi
pkill -f uwsgi -9
七、启动nginx
nginx
八、解决容器内部端口映射宿主机端口(启动容器时忘记映射端口)
#1、查看容器的ip地址
docker inspect <容器id>|grep IPAddress
#2、ping查看是否通畅
ping <获得的IPAddress>
#3、telnet <获得的IPAddress> 80
#4、将容器的80端口映射到dockers宿主机的80端口
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.18.0.2:80
iptables -t nat -A POSTROUTING -d 172.18.0.2/32 -p tcp -m tcp --sport 80 -j SNAT --to-source 47.103.10.84
iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables-save > /etc/sysconfig/iptables