У меня есть файл докеров, который был в рабочем состоянии до того, как я попытался использовать тома. Файл dockerfile очень прост:
Dockerfile
FROM centos:7
RUN #compile some code
CMD #run the code
docker -compose
version: '3.4'
services:
myApp:
build: myApp
volumes:
- type: bind
- source: ./myApp
- target: /myApp
Во время фазы RUN
в Dockerfile
it говорит, что код не существует в /myapp
. Когда я вставляю c в контейнер, каталог действительно существует, поэтому я вполне уверен, что он монтирует код после того, как попробует и CMD
, и RUN
. Есть ли способ смонтировать код, прежде чем я попытаюсь запустить его?
Это просто для более быстрого тестирования разработки для интеграции с другим приложением. Это означает, что я хочу запускать свой код без необходимости каждый раз перестраивать его целиком. Так что решения, в которых используется только docker, а не docker -compose, мне особо не помогут (я не думаю).
РЕДАКТИРОВАТЬ 1
Я пробовал использовать ключевое слово command
, подобное следующему:
version: '3.4'
services:
myApp:
build: myApp
volumes:
- type: bind
- source: ./myApp
- target: /myApp
command: javac -d /myApp/path/to/classDir /path/to/x.java
Хотя команда, похоже, работает с некоторыми командами, я не понял как это работает.
Например, у меня может быть command: touch /myApp/path/to/somewhere/test.txt
, и он запускается, и этот каталог действительно существует, но если я запускаю команду, подобную приведенной выше (команда javac ), тот же путь не существует с javac. Таким образом, он может касаться этих каталогов, но он говорит, что каталог не существует, если я пытаюсь выполнить или скомпилировать что-то из того же каталога. Все еще пытаюсь понять.