13

This come from a design choice of YAML language about booleans Every unquoted value matching this "regex": y|Y|yes|Yes|YES|n|N|no|No|NO |true|True|TRUE|false|False|FALSE |on|On|ON|off|Off|OFF Will be converted to True or False. This start causing a problem when your code will test an environment value to be yes or no for example taking this script (...


9

That's YAML. It interprets true as a boolean. Envars must be strings, hence the requirement to make the type explicit via quotes. Test this out with https://www.json2yaml.com/


8

TL;DR There are a number of use cases for port mapping, but for DevOps at scale the primary reason is generally to enable mapping well-known service ports to available ports on the host. This matters when you're running large numbers of containers that use the same port by default, and you don't want to manually assign or track alternative port numbers. A ...


7

The Docker Compose file reference states, that environment variables are defined as VARIABLE=value array elements. For your case, the docker-compose.yml file would need to be changed to this: version: '3' services: server: ports: - 13045:3000 environment: - NODE_CONFIG='{"DATABASE_URL":"http://db:5984"}'


6

Here is my solution: (bitbucket-pipelines.yml) pipelines: default: - step: script: - export DOCKER_COMPOSE_VERSION=1.18.0 - export DOCKER_COMPOSE_URL=https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m) - curl -L $DOCKER_COMPOSE_URL > docker-...


6

We are less likely to see support of native docker-compose integration because pipelines API is a custom implementation of similar functionality, and also because possible security issues, but looks like more features are currently in development to implement more docker-compose-like features in this open issue. UPDATE: added support for multi-container ...


5

Research indicated that the anonymous volumes were created by influxdb and grafana/grafana. Anonymous volumes are not given an explicit name when they are first mounted into a container, so Docker gives them a random name that is guaranteed to be unique within a given Docker host. Besides the name, named and anonymous volumes behave in the same ...


5

I just figure it out. The problem is not with the service or the swarm, it's with the network. When I use driver: overlay the default subnet is 10.0.0.0/24 which result in 254 address. So I change the mask in the subnet, to 22, which result in 1022 address, I added: ipam: config: -subnet: 10.0.0.0/22 And now the network section in the docker-compose ...


5

“Image” needs to be at the same level as “build”.


5

What you are specifically after (building from a bare repository on a local filesystem) isn't functionality offered by Docker, and by extension, docker-compose. Docker supports building from a few different URLs, but not bare repositories on local filesystems. You can try a few workarounds: Build straight from Github: docker build https://github.com/docker/...


5

There are a few features of docker-compose that are not implemented in docker stack deploy and vice versa. With docker-compose, you can run privileged containers and change capabilities which is not supported with swarm services yet. You can also run a container that is designed to exit, e.g. a batch job, more intuitively in docker-compose than in swarm ...


4

If you use CentOS 7 (as I have ). You may have SELinux turned on by default.check https://www.rootusers.com/how-to-enable-or-disable-selinux-in-centos-rhel-7/ or mount like this: volumes: - ./database:/var/lib/mysql:Z - ./_conf/mariadb.cnf:/etc/mysql/my.cnf:Z - ./logs:/var/log/mysql:Z


4

Currently it is not possible to make concurrent builds with Docker Compose. There are issues about that but the latest tests indicates that concurrent builds takes actually longer than the sequential ones. The issue seems to be related to the storage drivers. You can track this issue to get updates: https://github.com/moby/moby/issues/9656


4

According to this documentation it does not seem to be possible to override complete sections in docker-compose by using different docker-compose files. If both files are present on the same directory level, Compose combines the two files into a single configuration. The configuration in the docker-compose.override.yml file is applied over and in ...


4

db_data:/var/lib/mysql simply means that the db_data volume that was previously created will be made available in the container at /var/lib/mysql. In you example it's created at the very end of the compose file. From the Docker documentation: "The docker volume db_data persists any updates made by Wordpress to the database." Compose volumes works the same ...


4

I've tried your case, and it works fine on my side: version: '2' services: test: image: ubuntu:16.04 command: sleep 9999 extra_hosts: - "${HOSTNAME}:1.1.1.1" - "test.com:1.1.1.1" and here is what I get in the container cat /etc/hosts ... 1.1.1.1 a1.test.com 1.1.1.1 test.com


4

docker-compose.override.yml, docker-compose.prod.yml and extend An outline answer would be to have a docker-compose.yml file for your common base configuration, a docker-compose.prod.yml for production-specific sets of containers and for other specific environments, docker-compose.override.yml. It is possible to use the docker-compose extend keyword/command/...


4

Yes, one would usually have minimal docker images, i.e., one responsibility per image/container, with appropriate networking between them. Yes, images are linear, there is only ever one unbroken line of FROMs. To merge two images, get the two Dockerfiles and see what they are doing; it should be pretty self explanatory. Then you can either craft a single new ...


3

You can try this, it works for me: Create a user named "git" $ sudo adduser git $ su git $ cd ~ $ mkdir .ssh && chmod 700 .ssh $ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys If you don't have ssh keys for "nou" user then, from "nou" user run $ ssh-keygen and accept all defaults. Add "nou" user's ssh public key to git user ...


3

According to this reply it should run by issuing: docker run -ti --rm -v `pwd`/docker-compose.yaml:/docker-compose.yml -v /var/run/docker.sock:/var/run/docker.sock docker/compose:1.16.1 up


3

I managed to use docker-compose to push images to a remote host by using the following image. tmaier/docker-compose:latest This is the basic docker image with docker-compose installed. My bitbucket-pipelines.yml looks like this: - step: image: tmaier/docker-compose:latest script: - (umask 077 ; echo $DOCKER_PRIVATE_KEY | base64 -d > ./...


3

docker-compose is just a glorified wrapper around docker which gives you a nice textual representation of all the options you would regularly give to docker build or docker run. Plus, of course, it bundles several docker images/containers together. That said, it has no provisions to run anything else than you would get by calling docker. I don't see how you ...


3

Docker on MacOS runs on a virtual machine (docker-machine), and it's known that docker-machine volume mounts may perform worse than what you'd expect. It becomes worse especially when it comes operations concerning lots of small files, like scanning the filesystem. Official Docker documentation also mentions this, and suggests some workarounds by lowering ...


3

Well it depends on whether the services (containers) within the docker-compose.yml depends on each other. If for example, service B depends on service A, and A fails to start up, so will B. It can also be the case that a service logically depends on another service (without actually declaring it in your docker-compose.yml), and it not starting up causes a ...


3

Why not docker-compose build ? https://docs.docker.com/compose/reference/build/ You can also do docker-compose up --build to force a rebuild.


3

The original and most popular solution I've seen is kompose which does exactly as you are asking, converts the compose yaml file into kubernetes yaml files. If you want to continue working with a compose.yml file for compatibility with other systems, then docker recently open sourced their compose on kubernetes solution that integrates directly into ...


3

Note: answer based only on docs, I didn't play with docker much. If you choose scripting you could pick a higher layer than just ps, based on either: the docker-compose events CLI: Usage: events [options] [SERVICE...] Options: --json Output events as a stream of json objects Stream container events for every container in the project. the ...


3

If you don't mind running a few other services at your home, then I'd suggest you try Prometheus with Grafana, dockerd-exporter and AlertManager. Prometheus will store time series data collected from your dockerd-exporter, Grafana will display that data in a very nice way and AlertManager will allow you to configure alerts based on your needs. Check out a ...


2

Yes, it's possible. You can use --parallel option since docker-composer 1.23.2 version. Version 1.23.2 also correct 1.23.0 bug: Reverted a 1.23.0 change that appended random strings to container names created by docker-compose up, causing addressability issues. Note: Containers created by docker-compose run will continue to use randomly generated ...


2

According to this Q&A on github: The host network is special. You have to use network_mode: host on the service


Only top voted, non community-wiki answers of a minimum length are eligible