Не удается подключить приложение на локальном хосте после успешного развертывания сети docker

#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