用于构建和部署捆绑软件的docker卷

时间:2019-02-12 01:54:14

标签: docker docker-compose codeship

我对卷在Docker中的工作方式不太了解。我有两个单独的图像:一个用于构建javascript捆绑包,另一个用于将其部署到S3。我正在Codeship上进行所有操作,但我相信它们的codeship-steps.yml文件是与docker-compose兼容的。因此,我认为这并非特定于Codeship,但我可能是错的。

我在两个容器中都安装了一个卷,并且能够从写在“ write-artifact”容器中的“ read-artifact”容器中读取工件,如下所示:

场景1

# codeship-steps.yml
- name: write-artifact
  service: write-artifact
  command: /bin/bash -c "echo hi > /styleguide/hello.txt"

- name: read-artifact
  service: read-artifact
  command: cat /styleguide/hello.txt # this reads "hi"


# codeship-services.yml
write-artifact:
  build:
    context: .
    dockerfile: Dockerfile
  volumes:
    - ./tmp:/styleguide

read-artifact:
  image: busybox
  volumes_from:
    - read-artifact

我可以从第二个容器中正确读取文件的内容。

但是,我要在第一个容器中运行一个npm脚本,并可以从seconds容器访问那些构建的资产。但是,当运行将资产捆绑到同一目录的npm脚本时,该目录显示为空。

场景2

# codeship-steps.yml
- name: write-artifact
  service: write-artifact
  command: /bin/bash -c "npm run build"

- name: read-artifact
  service: read-artifact
  command: ls -a /styleguide # this is empty


# codeship-services.yml (same as scenario 1)
write-artifact:
  build:
    context: .
    dockerfile: Dockerfile
  volumes:
    - ./tmp:/styleguide

read-artifact:
  image: busybox
  volumes_from:
    - read-artifact

我希望能够访问第二个容器中的已建资产,以便我可以仅使用该容器进行部署,而仅使用第一个容器进行构建。

0 个答案:

没有答案