如何使用定义的 key/value 初始设置 consul

how to initial setup consul with defined key/value

我已经使用 docker compose 设置了 docker 配置。

这是 docker 撰写文件的一部分

version: '3'
networks:
  pm:
services:
  consul:
    container_name: consul
    image: consul:latest
    restart: unless-stopped
    ports:
      - 8300:8300
      - 8301:8301
      - 8302:8302
      - 8400:8400
      - 8500:8500
      - 8600:8600
    environment:
      CONSUL_LOCAL_CONFIG: >-
        {
          "bootstrap": true,
          "server": true,
          "node_name": "consul1",
          "bind_addr": "0.0.0.0",
          "client_addr": "0.0.0.0",
          "bootstrap_expect": 1,
          "ui": true,
          "addresses" : {
            "http" : "0.0.0.0"
          },
          "ports": {
            "http": 8500
          },
          "log_level": "DEBUG",
          "connect" : {
            "enabled" : true
          }
        }
    volumes:
      - ./data:/consul/data
    command: agent -server -bind 0.0.0.0 -client 0.0.0.0 -bootstrap-expect=1

然后通过浏览器设置键值

我想在新环境中添加 key/value 作为初始值,这样就可以避免在浏览器中执行额外的设置步骤。

这是我使用 consul kv 命令导出的配置:

# consul kv export config/
[
        {
                "key": "config/",      
                "flags": 0,
                "value": ""
        },
        {
                "key": "config/drug2/",
                "flags": 0,
                "value": ""
        },
        {
                "key": "config/drug2/data",
                "flags": 0,
                "value": "e30="
        }
]

据我所知Docker Compose 无法在容器启动后运行自定义command/script。

作为解决方法,您可以编写一个 shell 脚本来执行 docker-compose up,然后执行 运行s consul kv importcurl 命令来对抗 Consul 的 Transaction API 添加您要加载的数据。