Как я могу запустить свой Docker Image и увидеть работающее приложение?
Я создал пример веб-приложения на Java (с использованием Gradle и SpringBoot), а затем докернизировал его с помощью Jib. В моем файле build.gradle есть строка: "ports = ['9090']", потому что я хочу видеть веб-приложение на этом порту. И в моем файле application.properties есть строка: "server.port = 9090".
Docker Image успешно создан. Но когда я запускал это изображение, я не мог видеть результаты его работы. Если я запускаю JAR-файл, все в порядке. Веб-приложение работает на 9090 порту.
Я хочу видеть, как работает мое веб-приложение, когда я выполняю команду Docker run. Как я могу изменить порт образа или чего-либо еще (свойства NettyWebServer), чтобы увидеть работающий образ на этом порту, что я хочу? Можете ли вы помочь мне с этим вопросом, пожалуйста? Благодарю вас.
1 ответ
Если вы хотите использовать другой порт в образе докера, чем в вашей локальной среде, вы можете скопировать другой application.properties
файл с server.port=XXXX
указано с помощью этой команды в вашем Dockerfile
COPY ./src/main/resources/docker-application.properties /opt/my-app/docker-application.properties
Тогда в вашем entrypoint.sh
java -jar /opt/my-app/my-app-0.0.1-SNAPSHOT.jar --spring.config.location=/opt/my-app/docker-application.properties
После создания приложения с помощью вашего инструмента (будь то Maven или Gradle) вам нужно выполнить следующие команды (при условии, что вы находитесь в каталоге приложения с вашим Dockerfile
так далее)
docker build -t my-app .
docker run -d -p [desired_port]:[docker_application_properties_port] --name my-app my-app
desired_port
порт, который вы введете в URL. docker_application_properties_port
это тот, который вы указали в своем docker-application.properties
файл.
Если вы работаете Windows OS
тогда многие пользователи делают ошибку, пытаясь использовать 127.0.0.1:9090
, Вы должны попробовать использовать 192.168.99.100:9090
и если это не работает, то вам нужно запустить CMD
а потом ipconfig /all
и искать что-то вроде Ethernet Adapter (DockerNAT)
и увидеть IP
там.