我正在開發一個作業流服務作為培訓專案。從細節中抽象出來,這個問題你需要知道的一切都在影像中。為了部署,我租了一臺服務器并在其上運行 docker-compose。一切正常,但我擔心的是埠 8000 和 5432 是開放的。
第一個問題是,值得擔心嗎?如果是這樣,如何擺脫它?Docker-compose 檔案內容如下
version: "3"
services:
db:
container_name: 'emkk-db'
image: postgres
volumes:
- ./backend/data:/var/lib/postgresql/data
env_file:
- ./backend/db.env
ports:
- "5432:5432"
backend:
container_name: 'emkk-backend'
image: emkk_backend
build: ./backend
volumes:
- ./backend:/emkk/backend
env_file:
- ./backend/.env
ports:
- "8000:8000"
depends_on:
- db
frontend:
container_name: 'emkk-frontend'
image: emkk_frontend
build: ./frontend
command: npm run start
env_file:
- ./frontend/.env
volumes:
- /emkk/frontend/node_modules
- ./frontend:/emkk/frontend
ports:
- "80:80"
depends_on:
- backend
我也想配置HTTPS協議。我嘗試安裝 nginx 并使用 certbot 在其上放置證書,然后將請求代理到容器。我坐了幾個小時,但我仍然沒有設法實作比 nginx 起始頁面的 HTTPS 更好的東西。
也許我在做完全錯誤的事情,但我是新手,我以前不必處理部署。我將不勝感激您的回答,其中將包含您如何做到這一點的想法或示例。
uj5u.com熱心網友回復:
如果您沒有從外部服務器連接到 8000(可能是 WAS)或 5432(資料庫),您可以將 docker-compose.yml 更改為:
- 您只需要為外部客戶端公開必要的埠。
- 當您連接到
backendfrom 時web,您應該使用服務名稱,例如backend:8000 - 當您連接到
dbfrom 時backend,您應該使用服務名稱,例如db:5432
version: "3"
services:
db:
container_name: 'emkk-db'
image: postgres
volumes:
- ./backend/data:/var/lib/postgresql/data
env_file:
- ./backend/db.env
backend:
container_name: 'emkk-backend'
image: emkk_backend
build: ./backend
volumes:
- ./backend:/emkk/backend
env_file:
- ./backend/.env
depends_on:
- db
frontend:
container_name: 'emkk-frontend'
image: emkk_frontend
build: ./frontend
command: npm run start
env_file:
- ./frontend/.env
volumes:
- /emkk/frontend/node_modules
- ./frontend:/emkk/frontend
ports:
- "80:80"
depends_on:
- backend
而且,您可以使用nginx 代理管理器通過 HTTPS 和來自 certbot 的證書提供服務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/373560.html
標籤:码头工人 nginx https ssl-证书 证书机器人
