Как создать изображение докеры для локального приложения с параметрами файлов и значений

У меня есть java-приложение (jar файл), которое я хочу запустить из образа докеры.

Я создал файл Docker для создания изображения с использованием centos в качестве базы и установки java как такового:

Dockerfile
FROM centos
RUN yum install -y java-1.7.0-openjdk

Я побежал docker build -t me/java7 после того, как получил изображение me/java7

однако я застрял в некоторых тупиках.

  • Как скопировать файл jar с хоста в образ/контейнер
  • Мне требуются 2 параметра. 1 - файл, который необходимо скопировать в каталог в контейнер во время выполнения. Другой - это число, которое должно быть передано в файл jar в команде java -jar автоматически, когда пользователь запускает docker run с параметрами

Дополнительные примечания:

Файл jar - это локальный файл. Не размещено нигде, доступное через wget или что-то еще. Самое близкое, что у меня есть на данный момент, это доля Windows, содержащая его. Я также мог бы получить доступ к исходному файлу из репозитория git, но это связано с компиляцией всего и установкой maven и git на изображении, поэтому я бы предпочел избежать этого.

любая помощь очень ценится.

Ответ 1

  • В Dockerfile добавьте локальный файл, используя ADD, e g

    ADD your-local.jar /some-container-location
    
  • Вы можете использовать тома для размещения файла в контейнере во время выполнения, e g

    VOLUME /copy-into-this-dir
    

    И затем вы запускаете с помощью

    docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7
    

    Вы можете использовать ENTRYPOINT и CMD для передачи аргументов, e g

    ENTRYPOINT ["java", "-jar", "/whatever/your.jar"]
    CMD [""]
    

    И снова запустите с помощью

    docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7 --myNumber 42
    

(Посмотрите Документацию Dockerfile.)

Ответ 2

Предположим, что ваша файловая структура соответствует следующему :

DockerTest
        └── Dockerfile
        └── local.jar

Содержимое Dockerfile будет :

FROM centos
RUN yum install -y java-1.7.0-openjdk
EXPOSE 8080
ADD /local.jar fatJar.jar
ENTRYPOINT ["java","-jar","fatJar.jar"]

Используйте следующую команду :

$ cd DockerTest
$ docker build -f Dockerfile -t demo .