在使用docker compose之前是否需要先构建容器?

时间:2020-02-04 22:42:08

标签: docker docker-compose

创建了Docker compose解决方案,以一次建立所有依赖的容器,我读了一些文章,解释了如何同时提升多个容器:

version: '3'

services:
  postgresql:
    image: postgres:9.6.6
    ports:
      - 9932:5432
    expose:
      - "5432"
    environment:
      - POSTGRES_PASSWORD=pass
    restart: always
    volumes:
      - /data:/var/lib/postgresql/data

  myapp:
    image: myapp
    links:
      - postgresql
    depends_on:
      - "postgresql"
    restart: always
    ports:
      - "5000:5000

1)我是否需要使用myapppostgresql命令手动构建/运行docker builddocker run? (如果使用Postgresql,可能docker run-将其从docker hub中拉出),只有在使用docker-compose up

之后

2)如果我添加:

app:
    build: ./app

它会避免我脱离1)吗? (可以使用docker-compose up,而无需进行docker builddocker run准备步骤)

1 个答案:

答案 0 :(得分:2)

运行docker-compose up时:

  • 在这种情况下,如果您提供标签image而没有提供标签build(例如postgresql服务),则系统会先在本地计算机上查找映像名称({{1 }} 在这种情况下)。如果找不到,它将尝试从Internet拉取(Dockerhub的默认设置)
  • 如果您提供标签postgres:9.6.6,它将首先根据提供的buildcontext的位置尝试build您的应用程序图像,并根据那。
  • 如果同时提供Dockerfilebuild标签,它将构建图像并将其保存为您定义的图像名称。

所以回答您的问题:

  1. 您可以仅使用image,而无需先运行docker-compose updocker run。但是,对于私有注册表,您首先需要登录,以便Docker有权提取。
  2. 是,如上所述。