您好,我正在尝试使用nginx反向代理创建python应用程序和redis,但当我运行docker compose文件时,它会运行所有容器,但当我转到localhost:90时,它会显示nginx页面,而不是python文件中定义的页面。我正在学习这个教程here
Docker文件:
FROM python:3
RUN pip install flask
Python文件:
from flask import Flask
app = Flask(__name__)
# to connect redis
# use host "redis_app"
# use port "6379"
# use password "add_password_here"
@app.route('/')
def hello():
return 'Hello NGINX reverse proxy'
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
Docker编写文件
version: '3.1'
services:
nginx:
image: nginx:latest
container_name: nginx_reverseproxy
depends_on:
- flask
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
networks:
- docker-network
ports:
- 90:80
flask:
build:
context: ./
dockerfile: Dockerfile
image: flask:v1
container_name: flask_webapp
volumes:
- ./:/flask_code/
environment:
- FLASK_APP=/flask_code/main.py
command: python /flask_code/main.py
networks:
docker-network:
aliases:
- flask_webapp
ports:
- 8080:5000
depends_on:
- redis
redis:
image: redis
networks:
docker-network:
nginx.conf
server {
listen 90;
server_name localhost;
location / {
proxy_pass http://flask_webapp:5000/;
proxy_set_header Host "localhost";
}
}
首先,您需要创建桥接网络。假设网络名称为
my_project_network
现在我们将创建python应用程序
index.py
我们将使用烧瓶,所以我们需要安装它。我们可以通过创建
requirements.txt
文件并使用pip3 install -r requirements.txt
来安装它requirements.txt
现在将为python应用程序创建
Dockerfile
Dockerfile
现在将创建
nginx
配置文件default.conf
现在将创建
docker-compose
文件docker-compose.yml
现在我们完成了所有文件。所以我们将运行docker compose
要阻止它,只需使用
结果
注意:您可以用所需的任何端口替换端口
8080
注意:我创建了
my_project_network
以便可以连接docker中的服务并彼此组合。但是我可以不用outmy_project_network
来做这件事。但我更喜欢使用my_project_network
将另一个docker compose中的任何服务连接到此docker compose服务假设我们有
./anther_project/docker-compose.yml
flask_app_v2
可以连接到redis_app
,因为它们都在同一个网络中 .相关问题 更多 >
编程相关推荐