#angular #spring #docker #nginx
#angular #spring #docker #nginx
Вопрос:
У меня есть файл docker compose. Я запускаю 3 контейнера (nginx, postgresql и java app)
Все контейнеры созданы. Моя проблема в том, что когда я хочу получить доступ к своему приложению, я использую этот URL: http://10.34.18.2:81/myProject
но у меня ничего нет.
Что не так с моим conf
или моим yaml
файлом?
файл yaml:
version: '2'
services:
nginx:
image: 'nginx:latest'
container_name: production_nginx
volumes:
- './nginx.conf:/etc/nginx/nginx.conf'
- './nginx/error.log:/etc/nginx/error_log.log'
- './nginx/cache/:/etc/nginx/cache'
ports:
- '81:80'
- '444:443'
myProject-postgresql:
image: 'postgres:10.4'
environment:
- POSTGRES_USER=myProject
- POSTGRES_PASSWORD=myProject
ports:
- '5432:5432'
myProject-app:
image: myProject
environment:
- '_JAVA_OPTIONS=-Xmx512m -Xms256m'
- 'SPRING_PROFILES_ACTIVE=prod,swagger'
- 'SPRING_DATASOURCE_URL=jdbc:postgresql://myProject-postgresql:5432/myProject'
- JHIPSTER_SLEEP=10
ports:
- '8081:8080'
nginx conf:
server {
listen 81 default_server;
listen [::]:81 default_server;
server_name localhost;
location /myProject {
proxy_pass http://10.34.18.2:8081/;
rewrite ^/myProject(.*)$ $1 break;
}
}
Комментарии:
1. В вашем docker compose у вас есть,
81:80
в котором говорится, что с хоста все, что поступает на порт 81, будет перенаправляться на порт80
контейнера nginx docker. В вашей конфигурации nginx вы говорите, что прослушивать порт81
нельзя80
. Также неверен ваш прокси-сервер.2. @ShawnC. Я должен изменить номер порта, но когда я использую этот URL
http://10.34.18.2:81/myProject
, у меня появляется это сообщение ->This site is inaccessible
3. Ну,
10.34.18.2
это внутренний сетевой адрес docker, который может быть вашим приложением, а может и не быть, но на нем наверняка запущено ваше приложение8080
. Вы должны делатьhttp://myProject-app:8080
так, чтобы контейнер выполнял поиск в dns, чтобы найти ваше приложение.4. @ShawnC.
10.34.18.2
не является ли IP-адрес моего сервера внутренним сетевым адресом docker5. Ваш контейнер nginx указывает на приложение? Если да, измените порты приложения на — 8080 и укажите прокси-сервер nginx на 10.34.18.2:8080