etcd:
  image: rancher/etcd:v2.3.6
  labels:
    io.rancher.scheduler.affinity:container_label_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
    io.rancher.sidekicks: data
    io.rancher.service.allocate.skip.serialize: 'true'
    io.rancher.container.start_once: 'true'
  environment:
    ETCD_DATA_DIR: /data
    ETCDCTL_ENDPOINT: http://etcd:2379
  links:
  - data
  - discovery
  volumes_from:
    - data
# containerize data volume to enable restarts and upgrades
data:
  image: busybox
  command: /bin/true
  net: none
  volumes:
  - /data
  labels:
    io.rancher.container.start_once: 'true'
# Discovery containers are used for bootstrapping a cluster.
# They will shutdown once the bootstrap process is completed.
discovery:
  image: rancher/etcd:v2.3.6
  command: discovery_node
  labels:
    io.rancher.container.start_once: 'true'
    io.rancher.sidekicks: bootstrap
bootstrap:
  image: rancher/etcd:v2.3.6
  command: bootstrap
  links:
  - discovery
  labels:
    io.rancher.container.start_once: 'true'
  environment:
    ETCDCTL_ENDPOINT: http://etcd:2379
