Docker化Flask应用子域名部署:与主域名WordPress共存的可行性及方法
方案可行性与实现步骤
一、方案完全可行
主域名和子域名属于独立的域名解析指向,完全可以分别部署不同应用,互不干扰,同时也能通过主站导航链接等方式实现二者的关联。
二、具体实现步骤
1. 域名解析配置
- 登录域名服务商后台,添加两条解析记录:
- 主域名
mydomain.com:指向运行WordPress服务器的公网IP(支持A记录或CNAME记录,按需选择) - 子域名
app.mydomain.com:指向运行Flask Docker应用的服务器IP(可与WordPress同服务器,也可分开部署)
- 主域名
2. 服务器反向代理配置(以Nginx为例,同服务器场景)
如果两个应用部署在同一台服务器,用Nginx做反向代理区分不同域名的请求:
- 安装Nginx:
sudo apt install nginx # Debian/Ubuntu系统 # 或 sudo yum install nginx # CentOS/RHEL系统 - 新建WordPress站点配置文件(比如
/etc/nginx/sites-available/mydomain.com):server { listen 80; server_name mydomain.com www.mydomain.com; root /var/www/wordpress; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据实际PHP版本调整 } } - 新建Flask应用站点配置文件(比如
/etc/nginx/sites-available/app.mydomain.com):server { listen 80; server_name app.mydomain.com; location / { proxy_pass http://localhost:5000; # 对应Flask容器映射的主机端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } - 启用站点并重启Nginx:
sudo ln -s /etc/nginx/sites-available/mydomain.com /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/app.mydomain.com /etc/nginx/sites-enabled/ sudo nginx -t # 校验配置合法性 sudo systemctl restart nginx
3. Flask容器运行配置
确保Flask容器正确映射端口到主机,示例运行命令:
docker run -d -p 5000:5000 --name flask-app your-flask-image:latest
这里将容器内的5000端口映射到主机5000端口,与Nginx配置中的proxy_pass地址对应。
4. HTTPS配置(可选但强烈推荐)
用Certbot给两个域名申请免费SSL证书,自动配置HTTPS:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d mydomain.com -d www.mydomain.com -d app.mydomain.com
执行后Certbot会自动修改Nginx配置,将HTTP请求重定向到HTTPS。
5. 应用关联方式
- 最直接的方式:在WordPress主站的导航菜单中添加指向
app.mydomain.com的链接(比如“进入应用”按钮),让用户能快速从主站跳转至Flask应用 - 进阶身份同步:如果需要实现用户在两个系统中免登录跳转,可以考虑用OAuth2协议,或者共享Redis会话数据的方式,具体根据业务需求选择
内容的提问来源于stack exchange,提问作者Ces
相关产品推荐
相关产品推荐

