том докера для сборки и развертывания пакета - PullRequest
0 голосов
/ 12 февраля 2019

Я кое-что не совсем понимаю о том, как работают тома в Docker.У меня есть два отдельных образа: один, который используется для создания комплекта javascript, и другой, который используется для его развертывания на S3.Я делаю все это на Codeship, но считаю, что их файлы codehip-steps.yml должны быть совместимы с docker-compose.Поэтому я не думаю, что это относится к Codeship, но я могу ошибаться.

Я монтирую том в обоих контейнерах и могу прочитать артефакт из контейнера "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 в первом контейнере и получить доступ к этим встроенным ресурсам из контейнера секунд.Но при запуске сценария 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

Я бы хотел иметь возможностьиметь доступ к встроенным ресурсам во втором контейнере, так что я могу просто использовать этот контейнер для развертывания, в то же время просто используя первый контейнер для сборки.

...