#spring-boot #docker #dockerfile #war
#весенняя загрузка #docker #dockerfile #Война
Вопрос:
Я пытаюсь развернуть файл spring boot war в контейнере docker
Это мой файл docker:
FROM tomcat:alpine
RUN wget -O /usr/local/tomcat/webapps/ROOT.war -U admin:Learning http://localhost:8082/artifactory/demoArtifactory/com/demo/0.0.1-SNAPSHOT/demo-0.0.1-SNAPSHOT.war
EXPOSE 8080
CMD ["catalina.sh", "run"]
Я не могу подключиться к localhost: 7000
ОБНОВЛЕНИЕ: Это команда запуска docker:
запуск docker -it —name demo-application -d -p 8080:8080 hmt / demo-application: 49
"PortBindings": {
"8080/tcp": [
{
"HostIp": "",
"HostPort": "8080"
}
]
}
Теперь мой tomcat установлен на localhost: 8080, но я не могу получить доступ к своему приложению
Обновить:
@SpringBootApplication
public class DemoApplication{
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Комментарии:
1. Пожалуйста, замените текст изображениями.
2. Можете ли вы показать фрагмент вашего основного класса demoApplication?
3. @iron_man Я добавил фрагмент
Ответ №1:
Посмотрите на информацию о вашем порту:
Порт 9100
контейнера опубликован на порту 7000
хоста.
Но посмотрите на ваше приложение журнала: оно развернуто на 8080
(а не на 9100
).
Что вы хотите, так это опубликовать порт контейнера 8080
на 7000
порту хоста, например :
docker run -p 7000:8080 foo-image
Комментарии:
1. Мой сервер tomcat работает на 8080, но я все еще не могу получить доступ к своему приложению
2. @HMT Теперь все выглядит нормально. Пожалуйста, проверьте журналы контейнера, чтобы понять. Я отредактировал.
3. Да, я это сделал. В журналах нет такой информации
4. Хммм. Но в чем ваша ошибка? Можете ли вы удалить корневую папку приложения tomcat перед инструкцией wget?
RUN rm -rf /usr/local/tomcat/webapps/ROOT
Ответ №2:
1. Необходимо расширить SpringBootServletInitializer.Файл класса инициализатора сервлета Spring Boot позволяет настроить приложение при его запуске с помощью ссылки на контейнер сервлета:https://www.tutorialspoint.com/spring_boot/spring_boot_tomcat_deployment.htm
2. Переименуйте свой файл war из ROOT.war во что-то вроде sample.war .ROOT приложением по умолчанию обычно является Tomcat Manager