it-swarm.asia

docker-仅限于某些容器

我有一个包含几个容器的docker-compose.yml。其中三个用于我的应用程序(客户端,服务器和数据库),其余用于各种开发工具(例如psql,npm,manage.py等)。当我执行docker-compose up时,所有这些都已启动,但我只想启动三个主要的启动。由于我已经指定了链接,我可以用docker-compose up client开始这三个但是输出只来自那个容器。那么,有没有办法做到以下其中一种:

  1. 告诉docker-撰写哪些容器应由docker-compose up启动
  2. docker-compose up client获取所有链接容器的输出
67
aquavitae

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

$ docker-compose up -d client

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

$ docker-compose logs

它将包含所有已启动的容器

128
wsl

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

Sudo 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(有时你只想填充一个数据库)。

20
Hugo R

你通常不想这样做。使用Docker Compose定义 services that compose your app。 npmmanage.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
0
linkyndy