Ошибка при подключении к базе данных PostgreSql при запуске через docker compose
При запуске spring boot приложения из docker-compose - на 8085 порту, postgres - на 5432 выходит ошибка
liquibase.exception.DatabaseException: org.postgresql.util.PSQLException: FATAL: role
"postgres" does not exist
Лог запуска:
time="2024-02-12T15:01:36+03:00" level=warning msg="Found orphan containers ([java-liquibase]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up."
[+] Running 2/2
✔ Container java-postgres Recreated 3.4s
✔ Container notes-client-backend-1 Recreated 2.9s
Attaching to client-backend-1, postgres-1
postgres-1 |
postgres-1 | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres-1 |
postgres-1 | 2024-02-12 12:01:44.579 UTC [1] LOG: starting PostgreSQL 14.1 (Debian 14.1-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
postgres-1 | 2024-02-12 12:01:44.580 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
postgres-1 | 2024-02-12 12:01:44.580 UTC [1] LOG: listening on IPv6 address "::", port 5432
postgres-1 | 2024-02-12 12:01:44.699 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres-1 | 2024-02-12 12:01:44.903 UTC [26] LOG: database system was shut down at 2024-02-12 12:01:36 UTC
postgres-1 | 2024-02-12 12:01:44.993 UTC [1] LOG: database system is ready to accept connections
client-backend-1 |
client-backend-1 | . ____ _ __ _ _
client-backend-1 | /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
client-backend-1 | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
client-backend-1 | \\/ ___)| |_)| | | | | || (_| | ) ) ) )
client-backend-1 | ' |____| .__|_| |_|_| |_\__, | / / / /
client-backend-1 | =========|_|==============|___/=/_/_/_/
client-backend-1 | :: Spring Boot :: (v3.2.2)
client-backend-1 |
client-backend-1 | 2024-02-12T12:01:52.866Z INFO 1 --- [ main] c.danillkucheruk.notes.NotesApplication : Starting NotesApplication v0.0.1-SNAPSHOT using Java 17.0.10 with PID 1 (/app/*.jar started by root in /app)
client-backend-1 | 2024-02-12T12:01:52.874Z INFO 1 --- [ main] c.danillkucheruk.notes.NotesApplication : No active profile set, falling back to 1 default profile: "default"
client-backend-1 | 2024-02-12T12:01:58.510Z INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
client-backend-1 | 2024-02-12T12:01:58.813Z INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 280 ms. Found 3 JPA repository interfaces.
client-backend-1 | 2024-02-12T12:02:00.796Z INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8085 (http)
client-backend-1 | 2024-02-12T12:02:00.846Z INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
client-backend-1 | 2024-02-12T12:02:00.859Z INFO 1 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.18]
client-backend-1 | 2024-02-12T12:02:01.052Z INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
client-backend-1 | 2024-02-12T12:02:01.058Z INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 7727 ms
postgres-1 | 2024-02-12 12:02:02.255 UTC [33] FATAL: role "postgres" does not exist
client-backend-1 | 2024-02-12T12:02:02.353Z WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: org.postgresql.util.PSQLException: FATAL: role "postgres" does not exist
client-backend-1 | 2024-02-12T12:02:02.373Z INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
client-backend-1 | 2024-02-12T12:02:02.471Z INFO 1 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger :
client-backend-1 |
client-backend-1 | Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
client-backend-1 | 2024-02-12T12:02:02.618Z ERROR 1 --- [ main] o.s.boot.SpringApplication : Application run failed
client-backend-1 |
client-backend-1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: org.postgresql.util.PSQLException: FATAL: role "postgres" does not exist
client-backend-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:312) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1231) ~[spring-context-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:949) ~[spring-context-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.2.jar!/:3.2.2]
client-backend-1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.2.2.jar!/:3.2.2]
client-backend-1 | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.2.2.jar!/:3.2.2]
client-backend-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.2.jar!/:3.2.2]
client-backend-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.2.jar!/:3.2.2]
client-backend-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.2.jar!/:3.2.2]
client-backend-1 | at com.danillkucheruk.notes.NotesApplication.main(NotesApplication.java:10) ~[!/:0.0.1-SNAPSHOT]
client-backend-1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
client-backend-1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
client-backend-1 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
client-backend-1 | at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
client-backend-1 | at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91) ~[*.jar:0.0.1-SNAPSHOT]
client-backend-1 | at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53) ~[*.jar:0.0.1-SNAPSHOT]
client-backend-1 | at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58) ~[*.jar:0.0.1-SNAPSHOT]
client-backend-1 | Caused by: liquibase.exception.DatabaseException: org.postgresql.util.PSQLException: FATAL: role
"postgres" does not exist
client-backend-1 | at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:288)
~[liquibase-core-4.24.0.jar!/:na]
client-backend-1 | at org.springframework.boot.autoconfigure.liquibase.DataSourceClosingSpringLiquibase.afterPropertiesSet(DataSourceClosingSpringLiquibase.java:46) ~[spring-boot-autoconfigure-3.2.2.jar!/:3.2.2]
client-backend-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769) ~[spring-beans-6.1.3.jar!/:6.1.3]
client-backend-1 | ... 25 common frames omitted
client-backend-1 | Caused by: org.postgresql.util.PSQLException: FATAL: role "postgres" does not exist
client-backend-1 | at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713) ~[postgresql-42.6.0.jar!/:42.6.0]
client-backend-1 | at org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2825)
~[postgresql-42.6.0.jar!/:42.6.0]
client-backend-1 | at org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:175) ~[postgresql-42.6.0.jar!/:42.6.0]
client-backend-1 | at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:313) ~[postgresql-42.6.0.jar!/:42.6.0]
client-backend-1 | at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54) ~[postgresql-42.6.0.jar!/:42.6.0]
client-backend-1 | at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:263) ~[postgresql-42.6.0.jar!/:42.6.0]
client-backend-1 | at org.postgresql.Driver.makeConnection(Driver.java:443) ~[postgresql-42.6.0.jar!/:42.6.0]
client-backend-1 | at org.postgresql.Driver.connect(Driver.java:297) ~[postgresql-42.6.0.jar!/:42.6.0]
client-backend-1 | at org.springframework.jdbc.datasource.SimpleDriverDataSource.getConnectionFromDriver(SimpleDriverDataSource.java:144) ~[spring-jdbc-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:205) ~[spring-jdbc-6.1.3.jar!/:6.1.3]
client-backend-1 | at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:169) ~[spring-jdbc-6.1.3.jar!/:6.1.3]
client-backend-1 | at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:283)
~[liquibase-core-4.24.0.jar!/:na]
client-backend-1 | ... 28 common frames omitted
client-backend-1 |
Dockerfile:
FROM maven:3.8.4-openjdk-17 as builder
WORKDIR /app
COPY . /app/.
RUN mvn -f /app/pom.xml clean package -Dmaven.test.skip=true
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY --from=builder /app/target/*.jar /app/*.jar
EXPOSE 8085
ENTRYPOINT ["java", "-jar", "/app/*.jar"]
Docker-compose файл:
version: '3.8'
services:
client-backend:
image: notes:0.0.1
build:
context: .
dockerfile: Dockerfile
ports:
- "8085:8085"
depends_on:
- postgres
environment:
- SERVER_PORT= 8085
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres/notes
postgres:
image: 'postgres:14.1'
ports:
- 5432:5432
environment:
- 'POSTGRES_USER=username'
- 'POSTGRES_PASSWORD=password'
volumes:
- ./infrastructure/db/create_db.sql:/docker-entrypoint-initdb.d/create_db.sql
application.yml:
server:
port: 8085
spring:
datasource:
url: jdbc:postgresql://postgres/notes
username: username
password: password
driver-class-name: org.postgresql.Driver
liquibase:
change-log: classpath:db/changelog/db.changelog-master.yml
# url: jdbc:postgresql://postgres:5432/notes
# user: username
# password: password
application:
security:
jwt:
secret-key: 404E635266556A586E3272357538782F413F4428472B4B6250645367566B5970
expiration: 86400000 # a day