-
-
Save ju2wheels/1885539d63dbcfb20729 to your computer and use it in GitHub Desktop.
# https://docs.docker.com/compose/yml/ | |
# Each service defined in docker-compose.yml must specify exactly one of | |
# image or build. Other keys are optional, and are analogous to their | |
# docker run command-line counterparts. | |
# | |
# As with docker run, options specified in the Dockerfile (e.g., CMD, | |
# EXPOSE, VOLUME, ENV) are respected by default - you don't need to | |
# specify them again in docker-compose.yml. | |
# | |
service_name: | |
# Path to a directory containing a Dockerfile. When the value supplied | |
# is a relative path, it is interpreted as relative to the location of | |
# the yml file itself. This directory is also the build context that is | |
# sent to the Docker daemon. | |
# | |
# Compose will build and tag it with a generated name, and use that image | |
# thereafter. | |
build: ./ | |
# Add or drop container capabilities. See man 7 capabilities for a full list. | |
cap_add: | |
- ALL | |
cap_drop: | |
- NET_ADMIN | |
- SYS_ADMIN | |
# Override the default command. | |
command: /usr/bin/start | |
# A single value, analogous to its docker run counterpart. | |
cpu_shares: 73 | |
# A single value, analogous to its docker run counterpart. | |
domainname: foo.com | |
# Custom DNS servers. Can be a single value or a list. | |
# | |
# dns: 8.8.8.8 | |
dns: | |
- 8.8.8.8 | |
- 9.9.9.9 | |
# Custom DNS search domains. Can be a single value or a list. | |
# | |
# dns_search: example.com | |
dns_search: | |
- dc1.example.com | |
- dc2.example.com | |
# A single value, analogous to its docker run counterpart. | |
entrypoint: /code/entrypoint.sh | |
# Add environment variables from a file. Can be a single value or a list. | |
# | |
# If you have specified a Compose file with docker-compose -f FILE, paths | |
# in env_file are relative to the directory that file is in. | |
# | |
# Environment variables specified in environment override these values. | |
# | |
# Compose expects each line in an env file to be in VAR=VAL format. Lines | |
# beginning with # (i.e. comments) are ignored, as are blank lines. | |
# | |
# env_file: .env | |
env_file: | |
- ./common.env | |
- ./apps/web.env | |
- /opt/secrets.env | |
# Add environment variables. You can use either an array or a dictionary. | |
# | |
# Environment variables with only a key are resolved to their values on | |
# the machine Compose is running on, which can be helpful for secret or | |
# host-specific values. | |
# | |
# environment: | |
# - RACK_ENV=development | |
# - SESSION_SECRET | |
environment: | |
RACK_ENV: development | |
SESSION_SECRET: | |
# Expose ports without publishing them to the host machine - they'll only | |
# be accessible to linked services. Only the internal port can be specified. | |
expose: | |
- "3000" | |
- "8000" | |
# Extend another service, in the current file or another, optionally | |
# overriding configuration. | |
extends: | |
file: common.yml | |
service: webapp | |
# Link to containers started outside this docker-compose.yml or even | |
# outside of Compose, especially for containers that provide shared or | |
# common services. external_links follow semantics similar to links when | |
# specifying both the container name and the link alias (CONTAINER:ALIAS). | |
external_links: | |
- redis_1 | |
- project_db_1:mysql | |
- project_db_1:postgresql | |
# A single value, analogous to its docker run counterpart. | |
hostname: foo | |
# Tag or partial image ID. Can be local or remote - Compose will | |
# attempt to pull if it doesn't exist locally. | |
image: centos/centos7 | |
# Link to containers in another service. Either specify both the service | |
# name and the link alias (SERVICE:ALIAS), or just the service name | |
# (which will also be used for the alias). | |
# | |
# An entry with the alias' name will be created in /etc/hosts inside | |
# containers for this service. | |
# | |
# Each linked container injects a set of environment variables, each of | |
# which begins with the uppercase name of the container. | |
# | |
# To see what environment variables are available to a service, run | |
# docker-compose run SERVICE env. | |
# | |
# * name_PORT | |
# Full URL, e.g. DB_PORT=tcp://172.17.0.5:5432 | |
# | |
# * name_PORT_num_protocol | |
# Full URL, e.g. DB_PORT_5432_TCP=tcp://172.17.0.5:5432 | |
# | |
# * name_PORT_num_protocol_ADDR | |
# Container's IP address, e.g. DB_PORT_5432_TCP_ADDR=172.17.0.5 | |
# | |
# * name_PORT_num_protocol_PORT | |
# Exposed port number, e.g. DB_PORT_5432_TCP_PORT=5432 | |
# | |
# * name_PORT_num_protocol_PROTO | |
# Protocol (tcp or udp), e.g. DB_PORT_5432_TCP_PROTO=tcp | |
# | |
# * name_NAME | |
# Fully qualified container name, e.g. DB_1_NAME=/myapp_web_1/myapp_db_1 | |
links: | |
- db | |
- db:database | |
- redis | |
# A single value, analogous to its docker run counterpart. | |
mem_limit: 1000000000 | |
# Networking mode. Use the same values as the docker client --net parameter. | |
# | |
# net: "bridge" | |
# net: "none" | |
# net: "container:[name or id]" | |
# net: "host" | |
net: "bridge" | |
# Sets the PID mode to the host PID mode. This turns on sharing between | |
# container and the host operating system the PID address space. Containers | |
# launched with this flag will be able to access and manipulate other | |
# containers in the bare-metal machine's namespace and vise-versa. | |
pid: "host" | |
# Expose ports. Either specify both ports (HOST:CONTAINER), or just the | |
# container port (a random host port will be chosen). | |
# | |
# Note: When mapping ports in the HOST:CONTAINER format, you may experience | |
# erroneous results when using a container port lower than 60, because YAML | |
# will parse numbers in the format xx:yy as sexagesimal (base 60). For this | |
# reason, we recommend always explicitly specifying your port mappings as | |
# strings. | |
ports: | |
- "3000" | |
- "8000:8000" | |
- "49100:22" | |
- "127.0.0.1:8001:8001" | |
# A single value, analogous to its docker run counterpart. | |
privileged: true | |
# A single value, analogous to its docker run counterpart. | |
restart: always | |
# A single value, analogous to its docker run counterpart. | |
stdin_open: true | |
# A single value, analogous to its docker run counterpart. | |
tty: true | |
# A single value, analogous to its docker run counterpart. | |
user: postgresql | |
# Mount paths as volumes, optionally specifying a path on the host machine | |
# (HOST:CONTAINER), or an access mode (HOST:CONTAINER:ro). | |
volumes: | |
- /var/lib/mysql | |
- cache/:/tmp/cache | |
- ~/configs:/etc/configs/:ro | |
# Mount all of the volumes from another service or container. | |
volumes_from: | |
- service_name | |
- container_name | |
# A single value, analogous to its docker run counterpart. | |
working_dir: /code |
Thank you for the link.. but I'm still running into issues. I want to map "D:/MyFolder" (on my Windows machine) to "/MyFolder" in the Docker image.
docker-compose keeps complaining.
For the yml file below, this is the complaint I get:
ERROR: The Compose file '.\docker-compose.yml' is invalid because:
Unsupported config option for services.volumes: 'D:/MyFolder'
I appreciate any quick help.
My yml file is:
services:
tseLogger:
image: tselogger-2-3-0-6
ports: [42949]
command: -port 42949 -platform Production
tseShard0:
image: tseshard-2-3-0-6
ports: [52949]
volumes:
- type: volume
source: "D:/MyFolder"
target: /MyFolder
volume:
nocopy: true
command: -dataPath "/MyFolder/Data/DbCache" -platform Production -shardId 0 -shardsCount 2 -allMongoUpdates false -logger "127.0.0.1:42949" -shard0 "127.0.0.1:52949" -shard1 "127.0.0.1:52950" -loadENV "/MyFolder/Config.json"
tseShard1:
image: tseshard-2-3-0-6
ports: [52950]
volumes:
- type: volume
source: "D:/MyFolder"
target: /MyFolder
volume:
nocopy: true
command: -dataPath "/MyFolder/Data/DbCache" -platform Production -shardId 1 -shardsCount 2 -allMongoUpdates false -logger "127.0.0.1:42949" -shard0 "127.0.0.1:52949" -shard1 "127.0.0.1:52950" -loadENV "/MyFolder/Config.json"
volumes:
"D:/MyFolder":
@djmarcus1 that seems like its Docker for Windows related nonsense for sharing drives whether its Hyperv or WSL, see doc here: https://docs.docker.com/docker-for-windows/#shared-drives . I cant answer further as I dont use Windows as at all so ive never run into this issue.
Thank for your help... turns out the problem was the outer 'volumes:' had to be un-indented (start at the same column as 'services').
So basically, the error message provided no clue on how to remedy ..
This issue can be closed.
@djmarcus1 see the official documentation, use the long syntax form for volumes available with docker-compose v2.3 or later:
https://docs.docker.com/compose/compose-file/compose-file-v2/#long-syntax . This reference file was more for v1 docker-compose format I believe, I wrote it a while ago.