如何使用docker-compose

时间:2017-09-15 00:56:12

标签: docker docker-compose

如何使用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)做到这一点?

1 个答案:

答案 0 :(得分:0)

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

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