创建了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)我是否需要使用myapp
和postgresql
命令手动构建/运行docker build
和docker run
? (如果使用Postgresql,可能docker run
-将其从docker hub中拉出),只有在使用docker-compose up
2)如果我添加:
app:
build: ./app
它会避免我脱离1)吗? (可以使用docker-compose up
,而无需进行docker build
和docker run
准备步骤)
答案 0 :(得分:2)
运行docker-compose up
时:
image
而没有提供标签build
(例如postgresql
服务),则系统会先在本地计算机上查找映像名称({{1 }} 在这种情况下)。如果找不到,它将尝试从Internet拉取(Dockerhub的默认设置)postgres:9.6.6
,它将首先根据提供的build
和context
的位置尝试build您的应用程序图像,并根据那。Dockerfile
和build
标签,它将构建图像并将其保存为您定义的图像名称。所以回答您的问题:
image
,而无需先运行docker-compose up
或docker run
。但是,对于私有注册表,您首先需要登录,以便Docker有权提取。