Не могу соединить контейнер Springboot с контейнером MySQL через файл dockerrun.aws.json - PullRequest
0 голосов
/ 08 декабря 2018

Я уже несколько дней пытаюсь сделать это, и думаю, что просто запутался в том, как работает сопоставление портов.По сути, у меня есть приложение Springboot, в котором я вставляю банку в контейнер докера и связываю его с контейнером mysql.Если я запускаю локально, я могу заставить его работать, но я пытаюсь заставить его работать, выполняя «локальный запуск eb», прежде чем перейти к попытке развернуть его на AWSasticbeanstalk.Ошибка, которую я получаю при запуске eb local run: «ERROR 1 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

В длинной трассировке стека я вижу такие вещи, как: Caused by: java.net.ConnectException: Connection refused (Connection refused) main] o.s.b.a.orm.jpa.DatabaseLookup : Unable to determine jdbc url from datasource

Я пытался просмотреть ответы, подобные приведенным здесь,Я уверен, что перечислю проблему, но у меня просто не получается найти причину. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой линии связи

Вот мой application.properties внутри моего jar:

#Change the port that springboot starts up on
server.port=80

#For creating everything from scratch
spring.jpa.hibernate.ddl-auto=create

#For keeping the state of previous container
#spring.jpa.hibernate.ddl-auto=none

#For performance monitoring of hibernate should be false for any production release
#spring.jpa.properties.hibernate.generate_statistics=true

#url for local testing
spring.datasource.url = jdbc:mysql://mysql-docker-container:3306/maindb?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false

#url for deployment
spring.datasource.url = jdbc:mysql://elasticbeanstalk_mysqldockercontainer_1:3306/maindb?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false

#For Local Testing
#spring.datasource.url = jdbc:mysql://localhost:3306/maindb?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false


spring.datasource.username = root
spring.datasource.password = password

# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

Вот Dockerfile, который я создаю перед выполнением локального запуска eb (skyboundtrading - это просто образ ubuntu, который я загрузил с помощью java и mysqlcli)

FROM skyboundtrading
VOLUME /tmp
EXPOSE 80
ADD target/skyboundtrading-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]

вот команда сборки, которую я использую перед выполнением локального запуска eb:

docker build -f ./skyboundtrading/Dockerfile -t skyboundtradingchild ./skyboundtrading

И, наконец, вот файл dockerrun.aws.jsonчто команда eb local run использует:

{
  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [
    {
      "name": "elasticbeanstalk_skyboundtradingchild_1",
      "image": "skyboundtradingchild",
      "memory": 128,
      "portMappings": [
        {
          "hostPort": 80,
          "containerPort": 80
        }
      ],
      "links": [
        "elasticbeanstalk_mysqldockercontainer_1"
      ],
      "environment": [
        {
          "name": "MYSQL_ROOT_PASSWORD",
          "value": "password"
        }
      ]
    },
    {
      "name": "elasticbeanstalk_mysqldockercontainer_1",
      "image": "mysql:latest",
      "memory": 128,
      "portMappings": [
        {
          "hostPort": 3306,
          "containerPort": 3306
        }
      ],
      "environment": [
        {
          "name": "MYSQL_USERNAME",
          "value": "root"
        },
        {
          "name": "MYSQL_ROOT_PASSWORD",
          "value": "password"
        },
        {
          "name": "MYSQL_DATABASE",
          "value": "maindb"
        }
      ]
    }
  ]
}

После запуска eb local run и сбоя запуска с ошибками, которые я выложил выше, у меня остается это в качестве состояния моего контейнера докера:

➜  CodeBase docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
85cb5620f81c        mysql:latest        "docker-entrypoint.s…"   15 minutes ago      Up 15 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp   elasticbeanstalk_elasticbeanstalkmysqldockercontainer1_1

➜  CodeBase docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                           PORTS                                                                               NAMES
58d3e0bde90e        skyboundtradingchild   "java -jar app.jar"      15 minutes ago      Exited (1) 15 minutes ago                                                                                            elasticbeanstalk_elasticbeanstalkskyboundtradingchild1_1
85cb5620f81c        mysql:latest           "docker-entrypoint.s…"   15 minutes ago      Up 15 minutes                    0.0.0.0:3306->3306/tcp, 33060/tcp                                                   elasticbeanstalk_elasticbeanstalkmysqldockercontainer1_1


➜  CodeBase docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
skyboundtradingchild      latest              5a2e6e961c0a        16 minutes ago      639MB
<none>                    <none>              9df92435b273        25 minutes ago      639MB
skyboundtrading           latest              fcf5653a0bbc        5 days ago          597MB

Любая помощь будет оценена. Я суперзастрял на этом ...

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