我有一个船坞式作曲。Yml,其中包含几个容器。其中三个是我的应用程序(客户端,服务器和数据库),其余的是各种开发工具(如psql, npm,管理.py等)。当我做docker-compose up时,所有的都启动了,但我只想启动三个主要的。因为我已经指定的链接,我可以用docker-compose up客户端启动这三个,但输出只来自那一个容器。那么,有没有办法做到以下其中之一:

告诉docker-compose哪些容器应该由docker-compose up启动 从docker-compose up客户端获取所有链接容器的输出


当前回答

您可以使用run命令并指定要运行的服务。注意,run命令不会向主机公开端口。如果需要,您应该使用标记——service-ports来完成此操作。

Docker-compose run——service-ports客户端服务器数据库

其他回答

启动docker-compose文件中定义的特定服务。 例如,如果你有一个docker-compose.yml

docker-compose start db  

给定一个像这样的合成文件:

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:

有时,在启动整个套件之前,您只想启动mySQL(有时只是想填充数据库)。

你通常不想这么做。使用Docker Compose,你可以定义服务来组成你的应用。npm和manage.py只是管理命令。你不需要一个容器来装它们。如果你需要,比如用manage.py创建你的数据库表,你所要做的就是:

docker-compose run client python manage.py create_db

把它想象成Heroku使用的一次性dynos。

如果你真的需要把这些管理命令当作单独的容器(也可以使用Docker Compose),你可以创建一个单独的.yml文件,然后用下面的命令启动Docker Compose:

docker-compose up -f my_custom_docker_compose.yml

一个很好的解决方案是只运行所需的服务,就像这样:

docker-compose up --build $(<services.txt)

而services.txt文件是这样的:

services1 services2, etc

当然如果是依赖关系(depends_on),需要将相关服务一起运行。

——build是可选的,只是举个例子。

您可以使用run命令并指定要运行的服务。注意,run命令不会向主机公开端口。如果需要,您应该使用标记——service-ports来完成此操作。

Docker-compose run——service-ports客户端服务器数据库

你可以使用以下命令启动容器:

$ docker-compose up -d client

这将在后台运行容器,输出将从

$ docker-compose logs

它由所有开始的容器组成