问题
I have a docker-compose.yml which contain several containers. Three of them are for my app (client, server and database) and the rest are for various dev tools (e.g. psql, npm, manage.py, etc). When I do docker-compose up all of them are started, but I only want the three main ones to start. Because of the links I've specified, I can start just those three with docker-compose up client but then the output is only from that one container. So, is there a way to do one of the following:
- Tell docker-compose which containers should by started by
docker-compose up - Get output from all linked containers from
docker-compose up client
回答1:
You can start containers by using:
$ docker-compose up -d client
This will run containers in the background and output will be avaiable from
$ docker-compose logs
and it will consist of all your started containers
回答2:
To start a particular service defined in your docker-compose file. for example if your have a docker-compose.yml
sudo docker-compose start db
given a compose file like as:
version: '3.3'
services:
db:
image: mysql:5.7
ports:
- "3306:3306"
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: yourPassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: yourPassword
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80:80"
volumes:
- ./l3html:/var/www/html
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: yourPassword
volumes:
db_data:
l3html:
Some times you want to start mySQL only (sometimes you just want to populate a database) before you start your entire suite.
回答3:
You usually don't want to do this. With Docker Compose you define services that compose your app. npm and manage.py are just management commands. You don't need a container for them. If you need to, say create your database tables with manage.py, all you have to do is:
docker-compose run client python manage.py create_db
Think of it as the one-off dynos Heroku uses.
If you really need to treat these management commands as separate containers (and also use Docker Compose for these), you could create a separate .yml file and start Docker Compose with the following command:
docker-compose up -f my_custom_docker_compose.yml
来源:https://stackoverflow.com/questions/30233105/docker-compose-up-for-only-certain-containers