docker - 带有 nginx 和 gunicorn 的 docker 未在浏览器中打开
问题描述
我是新手Docker
并设置使用和docker
运行Django
应用程序gunicorn
nginx
我的配置文件是
码头工人-compose.yml
version: '3'
services:
nginx:
image: nginx:latest
container_name: "myapp-nginx"
ports:
- "10080:80"
- "10443:43"
volumes:
- .:/app
- ./config/nginx:/etc/nginx/conf.d
- ./static_cdn:/static
depends_on:
- web
web:
build: .
container_name: "myapp-dev"
command: ./start.sh
volumes:
- .:/app
- ./static_cdn:/static
ports:
- "9010"
depends_on:
- db
expose:
- "9010"
db:
image: postgres
container_name: "myapp-db"
配置/nginx/nginx.conf
upstream web {
ip_hash;
server web:9010;
}
server {
location /static {
autoindex on;
alias /static/;
}
location / {
proxy_pass http://web;
}
listen 9010;
server_name localhost;
}
启动.sh
#!/usr/bin/env bash
# Start Gunicorn processes
echo --: Starting application build
echo --: Creating migration
python3 manage.py makemigrations
echo ------: makemigrations complete
echo --: Running migration
python3 manage.py migrate
echo ------: migrate complete
echo --: Running collectstatic
python3 manage.py collectstatic <<<yes
echo ------: collectstatic complete
echo --: Starting Gunicorn.
gunicorn koober.wsgi:application \
--bind 0.0.0.0:9010 \
--workers 3
运行 docker 使用
docker-compose up --build
它运行成功,输出为
这里 gunicorn 成功启动于0.0.0.0:9010
. 但无法使用浏览器访问应用程序。
我在浏览器中尝试了以下地址
- 127.0.0.1:9010
- 127.0.0.1:10080
- 127.0.0.1
- 本地主机:9010
- 本地主机:10080
- 本地主机
- 0.0.0.0:9010
- 0.0.0.0:10080
- 0.0.0.0
但他们都没有工作。
编辑2:输出
docker ps -a
解决方案
试试这个
upstream web {
ip_hash;
server web:9010;
}
server {
listen 10080;
location / {
proxy_pass http://web;
}
}
Nginx 应该监听10080端口,因为在您的撰写文件中,您已将端口 80 暴露到 10080 端口。
然后尝试http://localhost:10080或http://machine-ip-address:10080
这是我写的博客,用于解释 Docker + Nginx + Web 应用程序如何协同工作。
源代码 https://github.com/RohanMohite/Docker-Nginx-PHP/blob/master/server_nginx/conf/server.conf
推荐阅读
- javascript - 初始显示后如何冻结css网格列宽
- sql - 输入上一个类型的最近日期
- python - 如何遍历 Python 中的贷款列表以生成摊销计划?
- python - PyTorch 如何计算二阶雅可比?
- javascript - 如何为我的 firebase 对象创建搜索栏
- r - 如何在 R 中创建 Pathway Enrichment 热图?
- c - 为什么我看到人们更多地使用 for(;;) 而不是 while(1) 进行无限循环?
- r - R:将 days() 间隔添加到小标题中的 Datetime 对象
- java - 这是对称密钥的正常格式/大小吗?
- ghidra - 为什么 thunk 不需要像函数一样多的参数?