Portainer Docker Swarm 导入秘密来撰写

Portainer Docker Swarm import secrets to compose

在 Portainer swarm 中添加 Secrets 并尝试导入为变量,任何人都可以举例说明我如何将其导入到 compose

version: '3.1'

services:
  mongodb-sharded:
    image: docker.io/bitnami/mongodb-sharded:4.4
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-sharded
      - MONGODB_SHARDING_MODE=mongos
      - MONGODB_CFG_PRIMARY_HOST=mongodb-cfg-primary
      - MONGODB_CFG_REPLICA_SET_NAME=cfgreplicaset
      - MONGODB_REPLICA_SET_KEY=${MONGODB_KEY}
      - MONGODB_ROOT_PASSWORD=${MONGODB_PASSWORD}
    ports:
      - "27017:27017"

Docker 秘密将作为文件挂载在 /run/secrets/secret-name 下的容器中(如果未指定明确的挂载点)。要使用它,应用程序必须能够从这些文件中读取数据。这并不总是受支持。如果有的话,通常只有一小部分可用变量可以指定为文件。

官方Docker mongodb Image表示只支持 MONGO_INITDB_ROOT_USERNAME_FILEMONGO_INITDB_ROOT_PASSWORD_FILE.

bitnami/mongodb-sharded 图像中的自述文件未提供任何信息,是否支持 docker 秘密。

带有官方图像预定义秘密的撰写文件看起来像这样:

version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME_FILE: /run/secrets/mongodb-root-username
      MONGO_INITDB_ROOT_PASSWORD_FILE: /run/secrets/mongodb-root-password
    secrets:
      - mongodb-root-username
      - mongodb-root-password

  secrets:
    mongodb-root-username:
      external: true
    mongodb-root-password:
      external: true

使用 portariner Docker Swarm Secret 运行 mongodb 分片


version: '3.7'

secrets:
    mongo-root-password:
      external: true
    mongo-key:
      external: true
  

services:
  mongodb-sharded:
    image: docker.io/bitnami/mongodb-sharded:4.4
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-sharded
      - MONGODB_SHARDING_MODE=mongos
      - MONGODB_CFG_PRIMARY_HOST=mongodb-cfg-primary
      - MONGODB_CFG_REPLICA_SET_NAME=cfgreplicaset
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
    ports:
      - "27017:27017"
    secrets:
      - mongo-key
      - mongo-root-password

  mongodb-sharded-2:
    image: docker.io/bitnami/mongodb-sharded:4.4
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-sharded-2
      - MONGODB_SHARDING_MODE=mongos
      - MONGODB_CFG_PRIMARY_HOST=mongodb-cfg-primary
      - MONGODB_CFG_REPLICA_SET_NAME=cfgreplicaset
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
    secrets:
      - mongo-key
      - mongo-root-password

  mongodb-shard0-primary:
    image: docker.io/bitnami/mongodb-sharded:4.4
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-shard0-primary
      - MONGODB_SHARDING_MODE=shardsvr
      - MONGODB_MONGOS_HOST=mongodb-sharded
      - MONGODB_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_REPLICA_SET_NAME=shard0
    volumes:
      - 'shard0_data:/bitnami'
    secrets:
      - mongo-key
      - mongo-root-password

  mongodb-shard0-secondary:
    image: docker.io/bitnami/mongodb-sharded:4.4
    depends_on:
      - mongodb-shard0-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-shard0-secondary
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_PRIMARY_HOST=mongodb-shard0-primary
      - MONGODB_PRIMARY_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_SHARDING_MODE=shardsvr
      - MONGODB_REPLICA_SET_NAME=shard0
    volumes:
      - 'shard0_sec_data:/bitnami'
    secrets:
      - mongo-key
      - mongo-root-password

  mongodb-shard1-primary:
    image: docker.io/bitnami/mongodb-sharded:4.4
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-shard1-primary
      - MONGODB_SHARDING_MODE=shardsvr
      - MONGODB_MONGOS_HOST=mongodb-sharded
      - MONGODB_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_REPLICA_SET_NAME=shard1
    volumes:
      - 'shard1_data:/bitnami'
    secrets:
      - mongo-key
      - mongo-root-password

  mongodb-shard1-secondary:
    image: docker.io/bitnami/mongodb-sharded:4.4
    depends_on:
      - mongodb-shard1-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-shard1-secondary
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_PRIMARY_HOST=mongodb-shard1-primary
      - MONGODB_PRIMARY_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_SHARDING_MODE=shardsvr
      - MONGODB_REPLICA_SET_NAME=shard1
    volumes:
      - 'shard1_sec_data:/bitnami'
    secrets:
      - mongo-key
      - mongo-root-password

  mongodb-shard2-primary:
    image: docker.io/bitnami/mongodb-sharded:4.4
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-shard2-primary
      - MONGODB_SHARDING_MODE=shardsvr
      - MONGODB_MONGOS_HOST=mongodb-sharded
      - MONGODB_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_REPLICA_SET_NAME=shard2
    volumes:
      - 'shard2_data:/bitnami'
    secrets:
      - mongo-key
      - mongo-root-password

  mongodb-shard2-secondary:
    image: docker.io/bitnami/mongodb-sharded:4.4
    depends_on:
      - mongodb-shard2-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-shard2-secondary
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_PRIMARY_HOST=mongodb-shard2-primary
      - MONGODB_PRIMARY_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_SHARDING_MODE=shardsvr
      - MONGODB_REPLICA_SET_NAME=shard2
    volumes:
      - 'shard2_sec_data:/bitnami'
    secrets:
      - mongo-key
      - mongo-root-password

  mongodb-cfg-primary:
    image: docker.io/bitnami/mongodb-sharded:4.4
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-cfg-primary
      - MONGODB_SHARDING_MODE=configsvr
      - MONGODB_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_REPLICA_SET_NAME=cfgreplicaset
    volumes:
      - 'cfg_data:/bitnami'
    secrets:
      - mongo-key
      - mongo-root-password

  mongodb-cfg-secondary:
    image: docker.io/bitnami/mongodb-sharded:4.4
    depends_on:
      - mongodb-cfg-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-cfg-secondary
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_PRIMARY_HOST=mongodb-cfg-primary
      - MONGODB_PRIMARY_ROOT_PASSWORD_FILE=/run/secrets/mongo-root-password
      - MONGODB_REPLICA_SET_KEY_FILE=/run/secrets/mongo-key
      - MONGODB_REPLICA_SET_NAME=cfgreplicaset
      - MONGODB_SHARDING_MODE=configsvr
    volumes:
      - 'cfg_sec_data:/bitnami'
    secrets:
      - mongo-key
      - mongo-root-password

volumes:
  shard0_data:
    driver: local
  shard0_sec_data:
    driver: local
  shard1_data:
    driver: local
  shard1_sec_data:
    driver: local
  shard2_data:
    driver: local
  shard2_sec_data:
    driver: local
  cfg_data:
    driver: local
  cfg_sec_data:
    driver: local