version: "3.12" services: foo: build: context: ./dir dockerfile: Dockerfile args: foo: bar labels: FOO: BAR cache_from: - foo - bar extra_hosts: - ipv4.example.com:127.0.0.1 - ipv6.example.com:::1 network: foo target: foo cap_add: - ALL cap_drop: - NET_ADMIN - SYS_ADMIN cgroup_parent: m-executor-abcd command: - bundle - exec - thin - -p - "3000" configs: - source: config1 - source: config2 target: /my_config uid: "103" gid: "103" mode: 288 container_name: my-web-container depends_on: - db - redis deploy: mode: replicated replicas: 6 labels: FOO: BAR update_config: parallelism: 3 delay: 10s failure_action: continue monitor: 1m0s max_failure_ratio: 0.3 order: start-first rollback_config: parallelism: 3 delay: 10s failure_action: continue monitor: 1m0s max_failure_ratio: 0.3 order: start-first resources: limits: cpus: "0.001" memory: "52428800" pids: 100 reservations: cpus: "0.0001" memory: "20971520" generic_resources: - discrete_resource_spec: kind: gpu value: 2 - discrete_resource_spec: kind: ssd value: 1 restart_policy: condition: on-failure delay: 5s max_attempts: 3 window: 2m0s placement: constraints: - node=foo preferences: - spread: node.labels.az max_replicas_per_node: 5 endpoint_mode: dnsrr devices: - /dev/ttyUSB0:/dev/ttyUSB0 dns: - 8.8.8.8 - 9.9.9.9 dns_search: - dc1.example.com - dc2.example.com domainname: foo.com entrypoint: - /code/entrypoint.sh - -p - "3000" environment: BAR: bar_from_env_file_2 BAZ: baz_from_service_def FOO: foo_from_env_file QUX: qux_from_environment env_file: - ./example1.env - ./example2.env expose: - "3000" - "8000" external_links: - redis_1 - project_db_1:mysql - project_db_1:postgresql extra_hosts: - somehost:162.242.195.82 - otherhost:50.31.209.229 - host.docker.internal:host-gateway hostname: foo healthcheck: test: - CMD-SHELL - echo "hello world" timeout: 1s interval: 10s retries: 5 start_period: 15s image: redis ipc: host labels: com.example.description: Accounting webapp com.example.empty-label: "" com.example.number: "42" links: - db - db:database - redis logging: driver: syslog options: syslog-address: tcp://192.168.0.42:123 mac_address: 02:42:ac:11:65:43 network_mode: container:0cfeab0f748b9a743dc3da582046357c6ef497631c1a016d28d2bf9b4f899f7b networks: other-network: ipv4_address: 172.16.238.10 ipv6_address: 2001:3984:3989::10 other-other-network: null some-network: aliases: - alias1 - alias3 pid: host ports: - mode: ingress target: 3000 protocol: tcp - mode: ingress target: 3001 protocol: tcp - mode: ingress target: 3002 protocol: tcp - mode: ingress target: 3003 protocol: tcp - mode: ingress target: 3004 protocol: tcp - mode: ingress target: 3005 protocol: tcp - mode: ingress target: 8000 published: 8000 protocol: tcp - mode: ingress target: 8080 published: 9090 protocol: tcp - mode: ingress target: 8081 published: 9091 protocol: tcp - mode: ingress target: 22 published: 49100 protocol: tcp - mode: ingress target: 8001 published: 8001 protocol: tcp - mode: ingress target: 5000 published: 5000 protocol: tcp - mode: ingress target: 5001 published: 5001 protocol: tcp - mode: ingress target: 5002 published: 5002 protocol: tcp - mode: ingress target: 5003 published: 5003 protocol: tcp - mode: ingress target: 5004 published: 5004 protocol: tcp - mode: ingress target: 5005 published: 5005 protocol: tcp - mode: ingress target: 5006 published: 5006 protocol: tcp - mode: ingress target: 5007 published: 5007 protocol: tcp - mode: ingress target: 5008 published: 5008 protocol: tcp - mode: ingress target: 5009 published: 5009 protocol: tcp - mode: ingress target: 5010 published: 5010 protocol: tcp privileged: true read_only: true restart: always secrets: - source: secret1 - source: secret2 target: my_secret uid: "103" gid: "103" mode: 288 security_opt: - label=level:s0:c100,c200 - label=type:svirt_apache_t stdin_open: true stop_grace_period: 20s stop_signal: SIGUSR1 sysctls: net.core.somaxconn: "1024" net.ipv4.tcp_syncookies: "0" tmpfs: - /run - /tmp tty: true ulimits: nofile: soft: 20000 hard: 40000 nproc: 65535 user: someone volumes: - type: volume target: /var/lib/mysql - type: bind source: /opt/data target: /var/lib/mysql - type: bind source: /foo target: /code - type: bind source: /foo/static target: /var/www/html - type: bind source: /bar/configs target: /etc/configs/ read_only: true - type: volume source: datavolume target: /var/lib/mysql - type: bind source: /foo/opt target: /opt consistency: cached - type: tmpfs target: /opt tmpfs: size: 10000 - type: cluster source: group:mygroup target: /srv working_dir: /code x-bar: baz x-foo: bar networks: external-network: name: external-network external: true other-external-network: name: my-cool-network external: true x-bar: baz x-foo: bar other-network: driver: overlay driver_opts: baz: "1" foo: bar ipam: driver: overlay config: - subnet: 172.16.238.0/24 - subnet: 2001:3984:3989::/64 labels: foo: bar some-network: {} volumes: another-volume: name: user_specified_name driver: vsphere driver_opts: baz: "1" foo: bar cluster-volume: driver: my-csi-driver x-cluster-spec: group: mygroup access_mode: scope: single sharing: none block_volume: {} accessibility_requirements: requisite: - segments: region: R1 zone: Z1 - segments: region: R1 zone: Z2 preferred: - segments: region: R1 zone: Z1 capacity_range: required_bytes: "1073741824" limit_bytes: "8589934592" secrets: - key: mycsisecret secret: secret1 - key: mycsisecret2 secret: secret4 availability: active external-volume: name: external-volume external: true external-volume3: name: this-is-volume3 external: true x-bar: baz x-foo: bar other-external-volume: name: my-cool-volume external: true other-volume: driver: flocker driver_opts: baz: "1" foo: bar labels: foo: bar some-volume: {} secrets: secret1: file: /foo/secret_data labels: foo: bar secret2: name: my_secret external: true secret3: name: secret3 external: true secret4: name: bar file: /foo x-bar: baz x-foo: bar configs: config1: file: /foo/config_data labels: foo: bar config2: name: my_config external: true config3: name: config3 external: true config4: name: foo file: /foo x-bar: baz x-foo: bar x-bar: baz x-foo: bar x-nested: bar: baz foo: bar