Как создать изображение докеры для локального приложения с параметрами файлов и значений
У меня есть 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 .