From a6faf9b2d9311e2774eff9be4ef590a4c83ff80e Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Tue, 11 Aug 2020 09:31:49 +0200 Subject: [PATCH] Refactor docker-compose.yml for better compatibility with new version (#1641) The newest versions of docker-compose want to have some values double-quoted in the env file while old versions failing to process such files. The solution is simple, move some of the parameters to the `docker-compose.yml` and rely on anchors for inheritance. Since the main idea behind env files was to keep "secret" information off the main YAML we also get rid of any non-secret stuff, mainly located in the etcd.env. --- docker-compose.yml | 78 +++++++++++++++++++++++++++++----------------- docker/etcd.env | 5 --- docker/patroni.env | 6 ---- 3 files changed, 49 insertions(+), 40 deletions(-) delete mode 100644 docker/etcd.env diff --git a/docker-compose.yml b/docker-compose.yml index f3e04d22..14b852d6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,53 +9,39 @@ services: etcd1: image: patroni networks: [ demo ] - env_file: docker/etcd.env container_name: demo-etcd1 hostname: etcd1 command: etcd -name etcd1 -initial-advertise-peer-urls http://etcd1:2380 + environment: &etcd_env + ETCD_LISTEN_PEER_URLS: http://0.0.0.0:2380 + ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379 + ETCD_INITIAL_CLUSTER: etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 + ETCD_INITIAL_CLUSTER_STATE: new + ETCD_INITIAL_CLUSTER_TOKEN: tutorial + ETCD_NAME: etcd1 + ETCD_INITIAL_ADVERTISE_PEER_URLS: http://etcd1:2380 etcd2: image: patroni networks: [ demo ] - env_file: docker/etcd.env container_name: demo-etcd2 hostname: etcd2 command: etcd -name etcd2 -initial-advertise-peer-urls http://etcd2:2380 + environment: + <<: *etcd_env + ETCD_NAME: etcd2 + ETCD_INITIAL_ADVERTISE_PEER_URLS: http://etcd2:2380 etcd3: image: patroni networks: [ demo ] - env_file: docker/etcd.env container_name: demo-etcd3 hostname: etcd3 command: etcd -name etcd3 -initial-advertise-peer-urls http://etcd3:2380 - - patroni1: - image: patroni - networks: [ demo ] - env_file: docker/patroni.env - hostname: patroni1 - container_name: demo-patroni1 environment: - PATRONI_NAME: patroni1 - - patroni2: - image: patroni - networks: [ demo ] - env_file: docker/patroni.env - hostname: patroni2 - container_name: demo-patroni2 - environment: - PATRONI_NAME: patroni2 - - patroni3: - image: patroni - networks: [ demo ] - env_file: docker/patroni.env - hostname: patroni3 - container_name: demo-patroni3 - environment: - PATRONI_NAME: patroni3 + <<: *etcd_env + ETCD_NAME: etcd3 + ETCD_INITIAL_ADVERTISE_PEER_URLS: http://etcd3:2380 haproxy: image: patroni @@ -67,3 +53,37 @@ services: - "5000:5000" - "5001:5001" command: haproxy + environment: &haproxy_env + ETCDCTL_ENDPOINTS: http://etcd1:2379,http://etcd2:2379,http://etcd3:2379 + PATRONI_ETCD3_HOSTS: "'etcd1:2379','etcd2:2379','etcd3:2379'" + PATRONI_SCOPE: demo + + patroni1: + image: patroni + networks: [ demo ] + env_file: docker/patroni.env + hostname: patroni1 + container_name: demo-patroni1 + environment: + <<: *haproxy_env + PATRONI_NAME: patroni1 + + patroni2: + image: patroni + networks: [ demo ] + env_file: docker/patroni.env + hostname: patroni2 + container_name: demo-patroni2 + environment: + <<: *haproxy_env + PATRONI_NAME: patroni2 + + patroni3: + image: patroni + networks: [ demo ] + env_file: docker/patroni.env + hostname: patroni3 + container_name: demo-patroni3 + environment: + <<: *haproxy_env + PATRONI_NAME: patroni3 diff --git a/docker/etcd.env b/docker/etcd.env deleted file mode 100644 index 6a1af075..00000000 --- a/docker/etcd.env +++ /dev/null @@ -1,5 +0,0 @@ -ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 -ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 -ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 -ETCD_INITIAL_CLUSTER_STATE=new -ETCD_INITIAL_CLUSTER_TOKEN=tutorial diff --git a/docker/patroni.env b/docker/patroni.env index 10df2eb4..7c0f840e 100644 --- a/docker/patroni.env +++ b/docker/patroni.env @@ -1,6 +1,3 @@ -PATRONI_SCOPE=demo -PATRONI_ETCD3_HOSTS='etcd1:2379','etcd2:2379','etcd3:2379' - PATRONI_RESTAPI_USERNAME=admin PATRONI_RESTAPI_PASSWORD=admin PATRONI_SUPERUSER_USERNAME=postgres @@ -9,6 +6,3 @@ PATRONI_REPLICATION_USERNAME=replicator PATRONI_REPLICATION_PASSWORD=replicate PATRONI_admin_PASSWORD=admin PATRONI_admin_OPTIONS=createdb,createrole - -# for etcdctl -ETCDCTL_ENDPOINTS=http://etcd1:2379,http://etcd2:2379,http://etcd3:2379