如何使用docker-compose创build准备部署的映像

如何使用docker-compose创build准备部署的映像?

我有点困惑于docker-compose ,它感觉是一个很好的工具,但是,我怎样才能build立一个没有Dockerfile的服务的图像?

我想实现的是从docker-compose.yml文件中声明的服务创build新的映像。 例如,假设我正在进行以下设置:

api: image: node:latest volumes: - "./api:/" ports: - "3001:3001" command: npm start client: image: node:latest volumes: - "./client:/" ports: - "3000:3000" command: npm start db: image: mysql:latest 

所以我有2个容器一个我该如何创build准备推动docker图像的每个容器?

例如,我想部署api容器

$ docker-compose build --no-cache api

我需要运行下一个?

$ docker build -t api .

这需要Dockerfile ,或者我可以直接去图像推送?

然后推它

docker push host_name/api:latest

1.什么是正确的stream程?

2.或者也许这完全是错误的方式?

编辑:

我想在这里实现的是理解或了解正确的stream程,例如我在我的问题中提出的情况,我想推这个容器到实际的服务器。 而且我不想在那里运行multicontainer应用程序。 所以给这个例子可以说我有一个像db一样的容器( 更新的合成文件的例子 )。 在我的本地机器上开发成功的应用程序使用docker撰写我想部署它们让我们说AWS在大多数情况下,我有数据库服务,我需要的是上传AP​​I容器镜像到EC,我不想部署db一个或client到同一台服务器。

所以为了做到这一点,我需要build立docker图像,我可以推送到我的AWS。 如何做到这一点从我有(docker合成设置)?

你通常需要在使用docker-compose之前创build你的镜像,但是有一个buold属性可以直接重新构build你的iamges,无论如何你需要一个docker文件并指定位置:

 version: '3' services: web: build: . ports: - "5000:5000" volumes: - .:/code redis: image: "redis:alpine"