您可以在docker内部网络上运行容器,默认情况下,docker-compose
为容器的交互通信创建一个网络。可以修改端口以将应用程序公开给主机。当您尝试在主机网络上运行大多数应用程序时,可能有两个应用程序尝试使用相同的端口(如端口8080
[在本例中]),一个端口只能由操作系统中的一个应用程序使用。请查看下面的代码片段以获取解决此问题的更多信息。
[端口映射<port on HOST>:<container port where app is exposed inside container>
]
version: '3.2' services: se-kpi-sim: image: test-app:0.0.1 ports: - 5000:8080 restart: unless-stopped environment: MODEL_NAME: "model_final.pickle.dat" se-kpi-sim-ui: image: test-ui:0.0.3 ports: - 3000:8080 restart: unless-stopped reverse-proxy: image: test-proxy:0.0.7 ports: - 80:80 # this volume mount if you are using bitnami/nginx image volumes: - /path/to/my_server_block.conf:/opt/bitnami/nginx/conf/server_blocks/my_server_block.conf:ro restart: unless-stopped database: image: postgres environment: POSTGRES_PASSWORD: password POSTGRES_USER: kpi_sim_user POSTGRES_DB: kpi_sim POSTGRES_HOST_AUTH_METHOD: trust ports: - 5432:5432 volumes: - database:/var/lib/postgresql/data restart: unless-stopped volumes: database:
为了将流量转发到特定应用程序,必须指定应用程序的IP地址或DNS名称。docker-compose
为docker-compose.yaml
文件中定义的所有服务创建域名。
server { listen 0.0.0.0:80; listen [::]:80; location / { proxy_pass http://se-kpi-sim-ui:8080; } location /predict { proxy_pass http://se-kpi-sim:8080/predict; } location /aggregate { proxy_pass http://se-kpi-sim:8080/aggregate; } location /media/pictures { proxy_pass http://se-kpi-sim:8080/media/pictures; } access_log /opt/bitnami/nginx/logs/anomaly_access.log; error_log /opt/bitnami/nginx/logs/anomaly_error.log; }
可以像这样挂载nginx.conf
:[在bitnami/nginx
图像中]
... volumes: - /path/to/my_server_block.conf:/opt/bitnami/nginx/conf/server_blocks/my_server_block.conf:ro ...
注:以上均为解决该问题的参考示例。entrypoint
容器可能会根据需要更改。
原文链接:https://www.5axxw.com/questions/content/im0wrx
© 版权声明
声明📢本站内容均来自互联网,归原创作者所有,如有侵权必删除。
本站文章皆由CC-4.0协议发布,如无来源则为原创,转载请注明出处。
THE END