Как мне смонтировать свой код в контейнер, а затем запустить его? - PullRequest
0 голосов
/ 03 августа 2020

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

...