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