我有一个带有多个postgresql数据库的docker容器。
version: "3.7" services: nginx: image: nginx:1.18.0-alpine ports: - 8028:80 volumes: - ./nginx/localhost/conf.d:/etc/nginx/conf.d depends_on: - webapp networks: - postgresql_network postgresql: image: "postgres:13-alpine" restart: always volumes: - type: bind source: ../DO_NOT_DELETE_POSTGRESQL_DATA target: /var/lib/postgresql/data environment: POSTGRES_DB: db1 POSTGRES_USER: simha POSTGRES_PASSWORD: krishna PGDATA: "/var/lib/postgresql/data/pgdata" networks: - postgresql_network postgresql2: image: "postgres:13-alpine" restart: always volumes: - type: bind source: ../DO_NOT_DELETE_POSTGRESQL_DATA2 target: /var/lib/postgresql/data environment: POSTGRES_DB: db2 POSTGRES_USER: simha POSTGRES_PASSWORD: krishna PGDATA: "/var/lib/postgresql/data/pgdata" networks: - postgresql_network networks: postgresql_network: driver: bridge
现在我可以为每个postgresq实例暴露两个不同的端口,并从主机上访问它们(如localhost 5432和localhost 5445)。
但我想用不同的域名来处理它们,而不是这样。
如
,端口pg1.docker.db
(nginx端口)和8028
db,端口pg.docker.db
(nginx端口),并使用nginx反向代理它们在内部使用8028
和postgresql
到不同的docker容器。postgresql2
而在主机
中,我将有/etc/hosts
127.0.0.1 pg1.docker.db 127.0.0.1 pg2.docker.db
我不确定,但类似的事情。谁能说我做得对吗?
## WEBSERVER upstream webapp { server webapp:8000; } server { listen 80; location / { proxy_pass http://webapp; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; } } ## POSTGRESQL DBS upstream postgres { server postgresql:5432; } upstream postgres2 { server postgresql2:5432; } server { listen 80 so_keepalive=on; server_name db1.domain.my; proxy_pass postgres; } server { listen 80 so_keepalive=on; server_name db2.domain.my; proxy_pass postgres2; }
我发现人们使用
和stream
。上述方法是否也能工作。或者我应该做一些http
原文链接:https://www.qiniu.com/qfans/qnso-68870662
© 版权声明
声明📢本站内容均来自互联网,归原创作者所有,如有侵权必删除。
本站文章皆由CC-4.0协议发布,如无来源则为原创,转载请注明出处。
THE END