[Update]: I noticed that the real problem may be that the tomcat server isn't started (only in the jar, when running with IntelliJ all seems to be working fine)
I have a docker compose file that defines two services: database and backend. Backend is a Springboot application. For some reason if i run the application locally (but connecting to the database container) it works, but when i run it on docker it fails to connect to the database. Or at least it seems so, I'm not sure what the real problem is and i haven't been abe to find a solution.
here are my files:
docker-compose.yaml
version: '3'
services:
mysql:
image: mysql:8.0
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: root
MYSQL_PASSWORD: root
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
networks:
- my_network
backend:
image: eclipse-temurin:17-jdk-jammy
container_name: backend
restart: no
volumes:
- ./backend/out/artifacts/backend_jar/:/app/
ports:
- '80:8080'
command: /bin/sh -c "cd app && java -jar backend.jar || sleep 2073600"
networks:
- my_network
volumes:
mysql-data:
networks:
my_network:
application.properties
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:mysql}:3306/root
spring.datasource.username=root
spring.datasource.password=root
and this is the error i get when i run on docker:
2024-02-05 09:30:57 . ____ _ __ _ _
2024-02-05 09:30:57 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
2024-02-05 09:30:57 ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
2024-02-05 09:30:57 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
2024-02-05 09:30:57 ' |____| .__|_| |_|_| |_\__, | / / / /
2024-02-05 09:30:57 =========|_|==============|___/=/_/_/_/
2024-02-05 09:30:57 :: Spring Boot :: (v3.2.2)
2024-02-05 09:30:57
2024-02-05 09:30:57 08:30:57.194 [main] INFO com.example.backend.BackendApplication -- Starting BackendApplication using Java 17.0.10 with PID 7 (/app/backend.jar started by root in /app)
2024-02-05 09:30:57 08:30:57.198 [main] INFO com.example.backend.BackendApplication -- No active profile set, falling back to 1 default profile: "default"
2024-02-05 09:30:57 08:30:57.959 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate -- Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2024-02-05 09:30:58 08:30:58.041 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate -- Finished Spring Data repository scanning in 69 ms. Found 4 JPA repository interfaces.
2024-02-05 09:30:58 08:30:58.508 [main] INFO com.zaxxer.hikari.HikariDataSource -- HikariPool-1 - Starting...
2024-02-05 09:30:58 08:30:58.757 [main] INFO com.zaxxer.hikari.pool.HikariPool -- HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:9ad12d1c-0bbc-4e56-82ed-3539a4fa97e5 user=SA
2024-02-05 09:30:58 08:30:58.759 [main] INFO com.zaxxer.hikari.HikariDataSource -- HikariPool-1 - Start completed.
2024-02-05 09:30:58 08:30:58.810 [main] INFO org.hibernate.jpa.internal.util.LogHelper -- HHH000204: Processing PersistenceUnitInfo [name: default]
2024-02-05 09:30:58 08:30:58.888 [main] INFO org.hibernate.Version -- HHH000412: Hibernate ORM core version [WORKING]
2024-02-05 09:30:58 08:30:58.931 [main] INFO org.hibernate.cache.internal.RegionFactoryInitiator -- HHH000026: Second-level cache disabled
2024-02-05 09:30:59 08:30:59.221 [main] INFO org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo -- No LoadTimeWeaver setup: ignoring JPA class transformer
2024-02-05 09:30:59 08:30:59.941 [main] INFO org.hibernate.validator.internal.util.Version -- HV000001: Hibernate Validator null
2024-02-05 09:31:00 08:31:00.876 [main] INFO org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator -- HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2024-02-05 09:31:00 08:31:00.933 [main] INFO org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean -- Initialized JPA EntityManagerFactory for persistence unit 'default'
2024-02-05 09:31:01 08:31:01.542 [main] INFO com.example.backend.BackendApplication -- Started BackendApplication in 4.587 seconds (process running for 4.92)
2024-02-05 09:31:01 08:31:01.550 [SpringApplicationShutdownHook] INFO org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean -- Closing JPA EntityManagerFactory for persistence unit 'default'
2024-02-05 09:31:01 08:31:01.563 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource -- HikariPool-1 - Shutdown initiated...
2024-02-05 09:31:01 08:31:01.566 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource -- HikariPool-1 - Shutdown completed.
In the end the only thing that worked was to build with maven directly inside the container. Not sure why nor my preferred solution but it works