{ "configs": { "config1": { "file": "/foo/config_data", "external": false, "labels": { "foo": "bar" } }, "config2": { "name": "my_config", "external": true }, "config3": { "name": "config3", "external": true }, "config4": { "name": "foo", "file": "/foo", "external": false } }, "networks": { "external-network": { "name": "external-network", "ipam": {}, "external": true }, "other-external-network": { "name": "my-cool-network", "ipam": {}, "external": true }, "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" } ] }, "external": false, "labels": { "foo": "bar" } }, "some-network": { "ipam": {}, "external": false } }, "secrets": { "secret1": { "file": "/foo/secret_data", "external": false, "labels": { "foo": "bar" } }, "secret2": { "name": "my_secret", "external": true }, "secret3": { "name": "secret3", "external": true }, "secret4": { "name": "bar", "file": "/foo", "external": false } }, "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", "credential_spec": {}, "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", "start_interval": "1s" }, "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" } }, "version": "3.12", "volumes": { "another-volume": { "name": "user_specified_name", "driver": "vsphere", "driver_opts": { "baz": "1", "foo": "bar" }, "external": false }, "cluster-volume": { "driver": "my-csi-driver", "external": false, "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 }, "other-external-volume": { "name": "my-cool-volume", "external": true }, "other-volume": { "driver": "flocker", "driver_opts": { "baz": "1", "foo": "bar" }, "external": false, "labels": { "foo": "bar" } }, "some-volume": { "external": false } }, "x-bar": "baz", "x-foo": "bar", "x-nested": { "bar": "baz", "foo": "bar" } }