1) Вот официальные документы между COPY и ADD :
Хотя ADD и COPY функционально схожи, вообще говоря,
COPY является предпочтительным. Это потому, что он более прозрачен, чем ADD. COPY
поддерживает только базовое копирование локальных файлов в контейнер,
в то время как ADD имеет некоторые функции (такие как локальное извлечение tar и удаленный
Поддержка URL), которые не сразу очевидны. Следовательно, лучший
для ADD используется локальное извлечение файла tar в образ, как в
ДОБАВИТЬ rootfs.tar.xz /.
Вы не можете сделать это в docker-compose.yml, вам придется использовать Dockerfile, если вы хотите добавить файлы к изображению.
2) docker-compose.yml имеет как точку входа, так и переопределение команды. Аналогично тому, как вы передаете CMD
во время выполнения с помощью докера, вы можете сделать с docker-compose run
docker run -itd mystuff/myimage:latest bash -c 'npm install && node server.js'
Вы можете сделать это с помощью docker-compose
, предполагая, что имя службы здесь myservice:
docker-compose run myservice bash -c 'npm install && node server.js'
Если в вашем сценарии использования используется только один контейнер, вероятно, трудно увидеть преимущества docker-compose для новичка. Если бы вы добавили mongodb контейнер nginx в свой стек разработки, вы бы начали видеть, где docker-compose действительно подхватывает и дает вам преимущества. Он работает лучше всего, когда используется для организации нескольких контейнеров, которые должны работать и взаимодействовать друг с другом.