У меня есть экземпляр sonarqube и nginx в докере.Sonarqube находится за nginx, и он работает нормально, я могу получить к нему доступ, НО я не могу ничего обновить в пользовательском интерфейсе sonarqube, например, установить плагины в Marketplace.Когда я нажимаю установить или обновить данные своей учетной записи, он говорит:
Похоже, что он не передает куки и токен аутентификации при выполнении вызовов Ajax.При нажатии кнопки «Установить» на плагине Marketplace он вызывает POST: http://localhost:8089/sonarqube/api/plugins/install
Я что-то пропустил в конфигурации nginx?
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
server {
location /sonarqube {
proxy_pass http://sonarqube:9000;
proxy_read_timeout 90s;
proxy_redirect http://sonarqube:9000 http://localhost:8089;
}
}
}
version: "3.5"
services:
nginx:
build:
context: .
dockerfile: Dockerfile.nginx
ports:
- "8089:8080"
networks:
- sonarnet
sonarqube:
build:
context: .
dockerfile: Dockerfile.sonarqube
expose:
- "9000"
networks:
- sonarnet
environment:
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
- SONARQUBE_JDBC_USERNAME=sonar
- SONARQUBE_JDBC_PASSWORD=sonar
- sonar.forceAuthentication=true
- sonar.web.context=/sonarqube
########### The following line fixed the problem:###########
- sonar.core.serverBaseUrl = localhost:8089/sonarqube
############################################################
volumes:
- sonarqubeConf:/opt/sonarqube/conf
- sonarqubeLogs:/opt/sonarqube/logs
db:
image: postgres
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresqlData:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
......
После того, как вы потратилицелый день я нашел решение.Поскольку sonar находится за обратным прокси-сервером и доступен как localhost: 8089 / sonarqube, нам также нужно указать sonar.core.serverBaseUrl.Поэтому добавление следующей переменной env решило проблему: - sonar.core.serverBaseUrl = localhost: 8089 / sonarqube