docker 个容器的 HTTPS
HTTPS for docker containers
我正在开发工作流服务作为培训项目。从细节中抽象出来,这道题你需要知道的一切都在image中。对于部署,我租了一台服务器并在上面 运行 docker-compose。一切正常,但我担心的是端口 8000 和 5432 已打开。
第一个问题是,值得担心吗?如果是这样,如何摆脱它?
Docker-撰写以下文件内容
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 更好的东西。
也许我做的事情完全错误,但我是新手,我以前没有处理过部署。如果您能提供答案,我将不胜感激,其中将包含如何执行此操作的想法或示例。
如果您没有从外部服务器连接到 8000(可能是 WAS)或 5432(数据库),您可以将 docker-compose.yml 更改为:
- 您只需为外部客户端公开必要的端口。
- 当您从
web
连接到 backend
时,您应该使用像 backend:8000
这样的服务名称
- 当您从
backend
连接到 db
时,您应该使用像 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 proxy manager 通过 HTTPS 和来自 certbot 的证书进行服务。
我正在开发工作流服务作为培训项目。从细节中抽象出来,这道题你需要知道的一切都在image中。对于部署,我租了一台服务器并在上面 运行 docker-compose。一切正常,但我担心的是端口 8000 和 5432 已打开。
第一个问题是,值得担心吗?如果是这样,如何摆脱它? Docker-撰写以下文件内容
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 更好的东西。
也许我做的事情完全错误,但我是新手,我以前没有处理过部署。如果您能提供答案,我将不胜感激,其中将包含如何执行此操作的想法或示例。
如果您没有从外部服务器连接到 8000(可能是 WAS)或 5432(数据库),您可以将 docker-compose.yml 更改为:
- 您只需为外部客户端公开必要的端口。
- 当您从
web
连接到backend
时,您应该使用像backend:8000
这样的服务名称
- 当您从
backend
连接到db
时,您应该使用像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 proxy manager 通过 HTTPS 和来自 certbot 的证书进行服务。