【发布时间】:2018-09-28 22:30:08
【问题描述】:
这是my docker-file.yml
version: '2'
services:
nginx:
image: nginx:latest
ports:
- '80:80'
- '443:443'
volumes:
- ./conf.d:/etc/nginx/conf.d/
- ./logs/nginx_access.log:/var/log/nginx_access.log
- ./logs/nginx_error.log:/var/log/nginx_error.log
- ./src/app/static:/flask-app/src/app/static
depends_on:
- web
web:
build: ./
command: gunicorn manage:app --bind 0.0.0.0:8000 --access-logfile=logs/gunicorn_access_log.txt
ports:
- '8000:8000'
volumes:
- ./:/flask-app
environment:
DATABASE_URL: postgresql://postgres:pass@localhost/flask_deploy
REDIS_HOST: redis
SECRET_KEY: 'BbGd3qe$dsf1'
CONFIG_NAME: 'prod'
links:
- postgres:postgres
- redis:redis
depends_on:
- postgres
- redis
postgres:
image: postgres:9.4
volumes:
- ./psql-data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: 'pass'
POSTGRES_DB: 'flask_deploy'
ports:
- '5432:5432'
redis:
image: "redis:3.0-alpine"
command: redis-server
ports:
- '6379:6379'
这是我的ngnix 配置(web 是来自docker-compose 文件的名称):
server {
listen 80;
server_name web;
# запись доступа и журналы ошибок в /var/log
access_log /var/log/nginx_access.log;
error_log /var/log/nginx_error.log;
location / {
# переадресация запросов приложений на сервер gunicorn
proxy_pass http://web:8000;
}
location /static {
# обрабатывать статические файлы напрямую, без пересылки в приложение
autoindex on;
alias /flask-app/src/app/static;
expires 1d;
}
}
我的网站可以在127.0.0.1 上使用(没有端口)。但是..我在处理静态文件时遇到了麻烦。 Flask url_for 生成 url 像:
http://web:8000/static/img/do.jpg
此链接不可用。
我可以试试这个:
http://127.0.0.1:8000/static/img/do.jpg
我看到了图片。但是这张图是gunicorn返回的,不是ngnix :(
我是 docker-compose 和 ngnix 的初学者。也许,一些关于我的配置的cmets?谢谢!
【问题讨论】:
-
您需要使用
volumes映射nginx容器内的static目录 -
@ConstantinGalbenu 嗯......也许,但它并没有解决我的主要问题。查看链接:
http://web:8000/static/img/do.jpg。 PATH 正确,但 HOST 不正确。我尝试使用静态地图,现在我在http://127.0.0.1/static/img/do.jpg上有 404 代码 :(((((( -
因为
web仅在 docker-compose 创建的网络内部是已知的。网址应为http://localhost/static/img/do.jpg。此外,不需要从web导出端口8000、从postgres导出5432和从redis导出6379,除非您将它们用于调试。 -
用最新的 nginx 配置更新答案
-
@ConstantinGalbenu 我没有更改 nginx 配置。我只挂载静态目录,如 (
- ./src/app/static:/flask-app/src/app/static)
标签: docker nginx docker-compose gunicorn