Любая помощь будет оценена. Я пытаюсь запустить mysql и приложение весенней загрузки в двух контейнерах, но в том же netowrk. С помощью следующей команды два контейнера общаются друг с другом. mysql команда docker run --name mysql-local --network=spring-boot-network -p 4000:3306 -d -e MYSQL_ROOT_PASSWORD=password -e MYSQL_USER=root-user -e MYSQL_PASSWORD=password -e MYSQL_DATABASE=testdb mysql
прикладная команда docker run --network=spring-boot-network -p 8080:8080 --name test-app -e RDH_HOSTNAME:mysql-local -e RDS_PORT:4000 -e RDS_USER:root-user -e -e RDS_PASSWORD:password 171ce195f461
с использованием вышеприведенной команды docker в spring-boot-network созданы два контейнера и они могут общаться друг с другом. проблема возникает, когда я пытался использовать docker -compose. Я прошел ту же среду, что и командная строка, но мое приложение отказывается соединяться с mysql.
Я использую плагин spotify для создания образа.
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.3</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>rajesh132/test-docker</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
при запуске контейнера mysql контейнер создается и запускается. Я могу подключиться к нему с помощью mysqlsh клиента и mysql рабочего места. Однако я не могу подключиться к своему приложению. Ниже приведены свойства и docker файлы, которые я использовал в своем проекте. Docker файл
ADD target/docker-test.jar docker-test.jar
ENTRYPOINT ["java", "-jar", "docker-test.jar"]
Docker Создать файл
version: '3.7'
services:
spirng-boot-test-application:
image: rajesh132/test-docker:0.0.1-SNAPSHOT
#build:
#context: .
#dockerfile: Dockerfile
ports:
- "8080:8080"
restart: always
depends_on: # Start the depends_on first
- mysql-app
environment:
RDS_HOSTNAME: mysql-app
RDS_PORT: 4000
RDS_DB_NAME: testdb
RDS_USERNAME: test-user
RDS_PASSWORD: password
networks:
- web-application-network
mysql-app:
image: mysql
ports:
- "4000:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: test-user
MYSQL_PASSWORD: password
MYSQL_DATABASE: testdb
volumes:
- mysql-database-data-volume:/var/lib/mysql
networks:
- web-application-network
# Volumes
volumes:
mysql-database-data-volume:
networks:
web-application-network:
application.yml
datasource:
# use this url for localhost
#use docker container name instead 'localhost'
# url: jdbc:mysql://localhost:3306/authorizationDb?createDatabaseIfNotExist=true
url: jdbc:mysql://${RDS_HOSTNAME:localhost}:${RDS_PORT:3306}/${RDS_DB_NAME:test}?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true
username: ${RDS_USER:root}
password: ${RDS_PASSWORD:password}
driver-class-name: com.mysql.cj.jdbc.Driver
initialization-mode: always
tomcat:
test-on-borrow: true
validation-query: SELECT 1
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
ddl-auto: update
properties:
hibernate:
show_sql: true
format_sql: true
database-platform: org.hibernate.dialect.MySQL8Dialect
logging:
level:
org:
hibernate:
type: trace
Я следил за многими блогами, документацией, но не смог построить. Любую помощь очень ценю.