docker compose 上的管理员:如何保护连接?

问题描述 投票:0回答:1

我使用 adminer 而不是 nginx-proxy。相关的 docker-compose 行:

version: "3"

services:
  nginx:
    image: "jc21/nginx-proxy-manager:latest"
    hostname: websin.space
    container_name: npm
    restart: always
    ports:
      - "80:80"
      - "81:81"
      - "443:443"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

  db:
    image: mysql:latest
    volumes:
      - ./db:/var/lib/mysql
      - ./init:/docker-entrypoint-initdb.d
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: doNotTellPasswordsOnStackOverflow
      MYSQL_DATABASE: so
      MYSQL_USER: so
      MYSQL_PASSWORD: doNotTellPasswordsOnStackOverflow

  adminer:
    image: adminer
    restart: always
    ports:
      - 9080:8080
    environment:
      ADMINER_DEFAULT_SERVER: db
    depends_on:
      - db    

现在,当我部署它时,我可以通过以下方式连接到数据库

http://websin.space:9080
,因为我在 yaml 文件中指定了端口。

但是,我希望确保此连接的安全。 我该怎么做?

docker-compose https lets-encrypt adminer
1个回答
0
投票

TL;DR:让Docker第一次分配端口然后使用它

更换

ports:
      - 9080:8080

ports:
      - 8080

在端口部分仅保留 8080 端口。然后运行

docker ps

docker compose 会默认分配一些端口

CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS         PORTS 
3d766a78be19   adminer                           "entrypoint.sh php -…"   10 seconds ago   Up 9 seconds   0.0.0.0:32768->8080/tcp, :::32768->8080/tcp

然后在nginx代理中将端口转发到端口

32768
并让它创建ssl证书

稍后,再次将端口部分替换为

ports:
 - 32768:808

即使重启后,SSL 也会保留。

可能有比这更好的解决方案,仍然欢迎建议

© www.soinside.com 2019 - 2024. All rights reserved.