compose: `run` does not set links
I have a docker-compose.yml file along the lines of:
analytics:
build: .
links:
- mongo:mongo
ports:
- 80:80
mongo:
build: docker_containers/mongo
expose:
- 27017
Running docker-compose up creates a link in /etc/hosts to the mongo service. However, running docker-compose run analytics bash does not create the link – I checked the /etc/hosts file.
The docs of docker-compose do not mention anything about this, so I’m confused.
- Why isn’t the link set when using
run? - How can I achieve this?
About this issue
- Original URL
- State: closed
- Created 9 years ago
- Comments: 26
@stcalica Use fenced code blocks (```) to format your code. For example:
Containers created by run are not expected to be discoverable as the service name. They are considered “one-off” or “adhoc” containers for running a task, not “regular service containers”.
If you need to
pdb, you can usedocker attachI think.I am using
docker-compose version 1.6.2, build 4d72027and I can definitely confirm that even with--service-portscontainer DNS resolution does not work withdocker-compose run <container>but does work withdocker-compose up <container>I can get by using ‘up’ but it would be nice for the console output to be coloured as it is with ‘run’ (I am running BDD tests)
I’m happy to help test any suggestions.
EDIT: Just to make this clear; I can ping, connect etc. from the container I run to other containers but I cannot connect from the other containers to the one I run.
In my case I have Django, MySQL and Webdriver containers. If I use
docker-compose up testserverwhich runs a Django test server and performs Webdriver tests then the ‘webdriver’ container can resolve the ‘test’ host. If I usedocker-compose run testserverit cannot but the ‘testserver’ container can still resolve ‘mysql’ and ‘webdriver’ so it seems when using run the DNS is not being updated.