https весеннее приложение, работающее в докере - PullRequest
0 голосов
/ 28 июня 2018

Моя проблема в последние пару дней в том, что я пытаюсь зашифровать некоторые из моих проектов, над которыми я работаю. Так как Docker - отличное решение для меня (если он запускается локально, он будет работать удаленно), насколько я понимаю, я получил 3 уровня, на которых я могу реализовать свой ssl-сертификат. Первый слой - это экземпляр или виртуальная машина, в моем случае это локально, aws или google. второй уровень - это демон Docker (который действует как сервер или менеджер всех работающих контейнеров), а последний уровень - это приложение или службы весенней загрузки, которые работают в среде jdk-alpine (вероятно, tomcat server ..).

Чтобы зашифровать приложение и запустить его через мой inteliJ, все идет хорошо, и я получаю защищенное соединение с приложением. как только я соберу свой докер, содержащий мое jar-приложение и запустив его с этой строкой:

Docker run -p 443: 8443 myImage

Я получаю сообщение об ошибке:

Не удалось запустить соединитель Tomcat, настроенный на прослушивание через порт 8443. Возможно, порт уже используется или разъем неправильно настроен.

независимо от того, какой порт я определяю в приложении весенней загрузки. Свойства

#HTTPS
server.port: 8443
server.ssl.key-store: https-key.jks
server.ssl.key-store-password: password
server.ssl.keyStoreType: JKS
server.ssl.keyAlias: https-key

Я получаю то же сообщение о том, что порт используется, значит, что-то мне не хватает.

Любая справка / руководства по реализации подключения https: // к приложению с весенней загрузкой, работающему в Docker, будет отличным дополнением к моей работе, и я буду очень благодарен!

1 Ответ

0 голосов
/ 28 июня 2018

Я настроил Spring Boot с SSL в прошлом. Это сработало, однако я обнаружил, что гораздо более гибкое, хорошо документированное и более быстрое решение (также с точки зрения производительности) заключалось в добавлении nginx.

Nginx может выступать в качестве обратного прокси , поэтому при запросе пользователя example.com:443 SSL будет прерван на nginx и перенаправлен вашему приложению Spring Boot, прослушивающему 8080, не подверженному воздействию внешний мир. например,

server {
   listen 443 ssl;
   server_name example.com;
   ssl_certificate /path/to/cert;
   ssl_certificate_key /path/to/key;

location / {
    proxy_pass http://spring_boot_application;
}

upstream spring_boot_application {
    server spring_boot_application:8080;
}

Существует учебное пособие с более подробной информацией и публикация стека потока от кого-то, кто делает то же самое, оба используют docker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...