如何使用docker-compose创建可以部署的映像?
我对 docker-compose 感到困惑,感觉这是一个很棒的工具,但是,如何在没有 Dockerfile 的情况下为我的服务构建图像?
我想要实现的是从 docker-compose.yml 文件中声明的服务创建新图像。例如,假设我正在进行以下设置:
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个容器,我如何为每个容器创建准备推送docker镜像?
例如,我想部署api
容器
$ docker-compose build --no-cache api
我需要下次跑吗?
$ docker build -t api .
需要 Dockerfile ,还是可以直接进行图像推送?
然后用
推送它 docker push host_name/api:latest
1。什么是正确的流程?
2。或者这可能完全是错误的方式?
我想在这里实现的是理解或了解正确的流程,例如我在我的问题中提出的情况,我想将此容器推送到实际的服务器。而且我不想在那里运行多容器应用程序。因此,举个例子,假设我还有一个容器,比如 db (更新的撰写文件示例)。在使用docker compose在我的本地计算机上开发成功的应用程序之后我想部署他们说AWS在大多数情况下我有数据库服务,我需要的是将API容器映像上传到EC而我不希望将db
一个或client
部署到同一服务器。
所以为了做到这一点,我需要构建我可以推送到我的AWS的docker镜像。如何从我拥有的(docker compose setup)做到这一点?
答案 0 :(得分:0)
在使用docker-compose之前,您通常需要构建图像,但是有一个buold属性可以直接在compose中重建你的iamges,无论如何你需要一个docker文件并指定位置:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"