如何解决使用docker的单个服务器上的多个站点
我希望通过docker-compose在单个服务器上建立多个Django网站,但在将启动配置放在一起时遇到了一些麻烦。谁能指出以下明显的问题?
主根站点容器(website.com):
docker-compose:
version: '3.7'
services:
web:
build:
context: .
dockerfile: Dockerfile.prod
env_file: prod.env
environment:
- DJANGO_SECURE_SSL_REDIRECT=True
- DJANGO_SECURE_PROXY_SSL_HEADER_CHECK=True
- VIRTUAL_HOST=website.com
- VIRTUAL_PORT=8000
- LETSENCRYPT_HOST=website.com
command: bash -c "
python manage.py migrate --noinput &&
python manage.py collectstatic --noinput &&
gunicorn config.wsgi:application --bind 0.0.0.0:8000
"
volumes:
- .:/home/app
networks:
web:
aliases:
- web
expose:
- 8000
depends_on:
- db
db:
image: postgres
hostname: db
env_file: prod.env
environment:
- POSTGRES_DB=postgres_db
- POSTGRES_USER=postgres_sa
- POSTGRES_PASSWORD=password
volumes:
- postgres_data:/var/lib/postgresql/data/
networks:
- web
ports:
- 5432:5432
nginx-proxy:
container_name: nginx-proxy
build:
context: nginx/
dockerfile: Dockerfile.prod.ssl
restart: always
volumes:
- .:/home/app
- static_volume:/home/app/staticfiles/
- media_volume:/home/app/media/
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- certs:/etc/nginx/certs:ro
- html:/usr/share/nginx/html
- dhparam:/etc/nginx/dhparam
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- web
ports:
- 443:443
- 80:80
depends_on:
- web
nginx-proxy-letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
env_file: prod.env
environment:
- NGINX_PROXY_CONTAINER=nginx-proxy
- DEFAULT_EMAIL=email@website.com
restart: always
volumes:
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- certs:/etc/nginx/certs
- html:/usr/share/nginx/html
- dhparam:/etc/nginx/dhparam:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- nginx-proxy
networks:
web:
volumes:
postgres_data:
conf:
vhost:
certs:
html:
dhparam:
############################################## ####################
同一服务器(sub.website.com)上的一个子域站点容器:
docker-compose:
version: '3.7'
services:
web:
build:
context: .
dockerfile: Dockerfile.prod
env_file: prod.env
environment:
- DJANGO_SECURE_SSL_REDIRECT=True
- DJANGO_SECURE_PROXY_SSL_HEADER_CHECK=True
- VIRTUAL_HOST=sub.website.com
- VIRTUAL_PORT=8000
- LETSENCRYPT_HOST=sub.website.com
command: bash -c "
python manage.py migrate --noinput &&
python manage.py collectstatic --noinput &&
gunicorn config.wsgi:application --bind 0.0.0.0:8000
"
volumes:
- .:/home/app
networks:
- django
- web
expose:
- 8000
depends_on:
- db
db:
image: postgres
hostname: db
env_file: prod.env
environment:
- POSTGRES_DB=postgres_db
- POSTGRES_USER=postgres_sa
- POSTGRES_PASSWORD=password
volumes:
- postgres_data:/var/lib/postgresql/data/
networks:
- web
networks:
django:
external:
name: djangomango_web
web:
volumes:
postgres_data:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。