Сервис Docker-compose (sonarqube) не может получить доступ к другим сервисам (postgres) - PullRequest
0 голосов
/ 13 июня 2019

У меня есть следующий файл doar-compose sonarqube + postgres. Он отлично работает на моих локальных машинах на Docker for Windows и Docker for Mac.

Но когда я развертываю его на нашем работающем сервере (Ubuntu 18.04), sonarqube не может получить доступ к postgres, и я получаю следующую ошибку в журналах контейнеров sonarqube:

Есть идеи, почему это происходит на живом сервере?

Это версии Docker и Docker-Compose:

Локальный компьютер

Docker версия 18.09.2, сборка 6247962

Docker-compose версия 1.23.2, сборка 1110ad01

Сервер

Docker версия 18.09.6, сборка 481bc77

Docker-compose версия 1.24.0, сборка 0aa5906

version: "3.5"
services:
  sonarqube:
    image: sonarqube:7.7-community    
    ports:
    - "9000:9000"
    depends_on:
    - db
    networks:
    - sonarnet
    environment:
    - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
    - SONARQUBE_JDBC_USERNAME=sonar
    - SONARQUBE_JDBC_PASSWORD=sonar
    - sonar.forceAuthentication=true
    volumes:
    - sonarqubeConf:/opt/sonarqube/conf
    - sonarqubeData:/opt/sonarqube/data
    - sonarqubeBundledPlugins:/opt/sonarqube/lib/bundled-plugins
    - 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
volumes:
  sonarqubeConf:
    name: sonarqubeConf
    driver: local
  sonarqubeData:
    name: sonarqubeData
    driver: local 
  sonarqubeBundledPlugins:
    name: sonarqubeBundled
    driver: local
  sonarqubeLogs:
    name: sonarqubeLogs
    driver: local
  postgresql:
    name: postgresql
    driver: local
  postgresqlData:
    name: postgresqlData
    driver: local  

В логах контейнера sonarqube появляется следующая ошибка:

SonarQube Server / 7.7.0.23042 / 1dcac8b8de36b377a1810cc8f1c4c31744e12729
sonarqube_1  | 2019.06.13 09:16:13 INFO  web[][o.sonar.db.Database] Create JDBC data source for jdbc:postgresql://db:5432/sonar
sonarqube_1  | 2019.06.13 09:16:23 ERROR web[][o.s.s.p.Platform] Web server startup failed
sonarqube_1  | java.lang.IllegalStateException: Can not connect to database. Please check connectivity and settings (see the properties prefixed by 'sonar.jdbc.').

Журналы контейнеров postgres

db_1         | 2019-06-13 11:18:36.548 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1         | 2019-06-13 11:18:36.548 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1         | 2019-06-13 11:18:36.561 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1         | 2019-06-13 11:18:36.579 UTC [24] LOG:  database system was shut down at 2019-06-13 11:18:35 UTC
db_1         | 2019-06-13 11:18:36.585 UTC [1] LOG:  database system is ready to accept connections

Дополнительные обновления

Я добавил еще один сервис (jenkins) в файл compose, и он запущен, но я не могу получить доступ к сервису db из сервиса jenkins! например ping db не работает !!

Когда я получаю состояние сети их мостовой сети, я вижу, что оба postgres и jenkins добавляются, но я даже не могу ping db обслуживать по его IP-адресу (ping 172.22.0.3) изнутри службы jenkins! Я подозреваю, что это связано с сетью между сервисами создания докеров. Есть идеи, почему это происходит?

[
    {
        "Name": "pipeline_sonarnet",
        "Id": "754f1d4c5240fc34f0b34faffad61513b95c7c44f89fe15bd66efb7b79c4f53f",
        "Created": "2019-06-13T22:33:58.907722824+01:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.22.0.0/16",
                    "Gateway": "172.22.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "10e84761051c6e6044be3d976ee51dfd70c41c89dc38aab2d3ebcbeb9c2d6129": {
                "Name": "pipeline_db_1",
                "EndpointID": "d8e3b21ffa536c7c437479b5dbaf9a5946177ef87f73cf8e024610ebc8d3c1db",
                "MacAddress": "02:42:ac:16:00:03",
                "IPv4Address": "172.22.0.3/16",
                "IPv6Address": ""
            },
            "c1d042c77b3a0a6f519e11a5a812e38b95ac229244a5d6f28669c4132a104f30": {
                "Name": "pipeline_jenkins_1",
                "EndpointID": "e7592e5de8001ebf4df854c83670552bda78dad51191e215885fd7d58339d98b",
                "MacAddress": "02:42:ac:16:00:02",
                "IPv4Address": "172.22.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "sonarnet",
            "com.docker.compose.project": "pipeline",
            "com.docker.compose.version": "1.24.0"
        }
    }
]

Интересно! У других людей тоже есть такая же проблема, но нет ответа: https://forums.docker.com/t/docker-compose-works-on-my-machine-but-not-production/31410

...