Я новичок в Docker, я пытаюсь запустить приложение Spring Boot в контейнере Docker.
Приложение использует базу данных Postgres, которая работает на моем локальном компьютере.
Это тот шаг, который я сделал
application.properties
spring.datasource.url= jdbc:postgresql://localhost:5432/TechDB
spring.datasource.username= myuser
spring.datasource.password= mypass
Файл Docker
FROM openjdk:22
LABEL maintainer="myself"
ADD target/AppToTest-1.0-SNAPSHOT.jar AppToTest.jar
ENTRYPOINT ["java", "-jar", "AppToTest.jar"]
Создайте изображение:
docker build -t apptotest:latest .
запустите контейнер
docker run -p 8000:8080 apptotest
Когда я пытаюсь вызвать свой API через порт 8000, я получаю ошибку сервера на стороне Spring:
[nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 08001
[nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
Для пояснения: приложение работает нормально, когда я запускаю простое приложение весенней загрузки, и правильно извлекает данные из моего Postgres
***Edit***
Я пытался запустить как контейнер Postgres, так и базу данных вместе с файлом композитора, выполнив следующие шаги:
Я добавил в DockerFIle:
FROM postgres:15.1-alpine
COPY *.sql /docker-entrypoint-initdb.d/
Я создал сценарий инициализации схемы в папке проекта.
Я создал файл docker-compose.yml
services:
postgres:
build:
context: .
dockerfile: Dockerfile
image: "apptotest"
container_name: "my-postgres"
environment:
POSTGRES_DB: "newdb"
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "password"
POSTGRES_HOST_AUTH_METHOD: "trust"
PGDATA: "/data/newdb"
volumes:
- newdb:/data/newdb
ports:
- "5432:5432"
restart: unless-stopped
volumes:
newdb:
external: true
затем я создаю образы для postgres и myapp, затем запускаю контейнеры таким образом: сначала я запускаю контейнер postgres, а затем свое приложение:
docker network create test_network
docker volume create newdb
docker-compose up -d
на этом этапе я вижу, что мой экземпляр БД запустился правильно, затем я пытаюсь запустить контейнер приложения с помощью этой команды:
docker run --name apptotest--network test_network -e POSTGRES_PASSWORD="password" -e SPRING_DATASOURCE_URL=jdbc:postgresql://my-postgres:5432/newdb -p 8000:8080 apptotest
Когда я запускаю команду, я не вижу ошибок, но я не вижу работающего загрузочного приложения Spring и не могу связаться с API, который я создал, если запущу их на почтальоне.
В журналах я вижу только информацию, связанную с БД
LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
LOG: database system was shut down at 2024-09-17 09:17:37 UTC
LOG: database system is ready to accept connections
Подробнее здесь: https://stackoverflow.com/questions/789 ... postgres-d
Приложение Spring Boot не работает внутри Docker-контейнера: ошибка при подключении к базе данных Postgres ⇐ JAVA
Программисты JAVA общаются здесь
1726591073
Anonymous
Я новичок в Docker, я пытаюсь запустить приложение Spring Boot в контейнере Docker.
Приложение использует базу данных Postgres, которая работает на моем локальном компьютере.
Это тот шаг, который я сделал
application.properties
spring.datasource.url= jdbc:postgresql://localhost:5432/TechDB
spring.datasource.username= myuser
spring.datasource.password= mypass
Файл Docker
FROM openjdk:22
LABEL maintainer="myself"
ADD target/AppToTest-1.0-SNAPSHOT.jar AppToTest.jar
ENTRYPOINT ["java", "-jar", "AppToTest.jar"]
Создайте изображение:
docker build -t apptotest:latest .
запустите контейнер
docker run -p 8000:8080 apptotest
Когда я пытаюсь вызвать свой API через порт 8000, я получаю ошибку сервера на стороне Spring:
[nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 08001
[nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
Для пояснения: приложение работает нормально, когда я запускаю простое приложение весенней загрузки, и правильно извлекает данные из моего Postgres
***Edit***
Я пытался запустить как контейнер Postgres, так и базу данных вместе с файлом композитора, выполнив следующие шаги:
Я добавил в DockerFIle:
FROM postgres:15.1-alpine
COPY *.sql /docker-entrypoint-initdb.d/
Я создал сценарий инициализации схемы в папке проекта.
Я создал файл docker-compose.yml
services:
postgres:
build:
context: .
dockerfile: Dockerfile
image: "apptotest"
container_name: "my-postgres"
environment:
POSTGRES_DB: "newdb"
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "password"
POSTGRES_HOST_AUTH_METHOD: "trust"
PGDATA: "/data/newdb"
volumes:
- newdb:/data/newdb
ports:
- "5432:5432"
restart: unless-stopped
volumes:
newdb:
external: true
затем я создаю образы для postgres и myapp, затем запускаю контейнеры таким образом: сначала я запускаю контейнер postgres, а затем свое приложение:
docker network create test_network
docker volume create newdb
docker-compose up -d
на этом этапе я вижу, что мой экземпляр БД запустился правильно, затем я пытаюсь запустить контейнер приложения с помощью этой команды:
docker run --name apptotest--network test_network -e POSTGRES_PASSWORD="password" -e SPRING_DATASOURCE_URL=jdbc:postgresql://my-postgres:5432/newdb -p 8000:8080 apptotest
Когда я запускаю команду, я не вижу ошибок, но я не вижу работающего загрузочного приложения Spring и не могу связаться с API, который я создал, если запущу их на почтальоне.
В журналах я вижу только информацию, связанную с БД
LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
LOG: database system was shut down at 2024-09-17 09:17:37 UTC
LOG: database system is ready to accept connections
Подробнее здесь: [url]https://stackoverflow.com/questions/78991373/spring-boot-application-not-working-inside-docker-container-error-on-postgres-d[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия