I have 2 containers - mysql database and java backend service.
services:
backend:
image: dockerhub/repo:backend-tag
ports:
- "3000:3000"
environment:
DB_URL: mysql://database/databasename
depends_on:
- database
database:
container_name: database
image: dockerhub/repo:database-tag
ports:
- "3306:3306"
volumes:
- testvolume:/data/db
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: db_user
MYSQL_DATABASE: databasename
MYSQL_PASSWORD: password
volumes:
testvolume:
Backend can connect with database container from local build:
jdbcUrl ="jdbc:mysql://127.0.0.1:3306/..."
But it doesn't work between containers:
jdbcUrl = "jdbc:mysql://database:3306/..."
backend Docker file:
FROM gradle:7-jdk11 AS build
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle shadowJar --no-daemon
FROM openjdk:11
EXPOSE 8080:8080
RUN mkdir /app
COPY --from=build /home/gradle/src/build/libs/*-all.jar /app/app.jar
ENTRYPOINT ["java","-jar","/app/app.jar"]