#java #postgresql #spring-boot #docker #docker-compose
#java #postgresql #весенняя загрузка #docker #docker-compose
Вопрос:
У меня есть Spring
MVC
приложение, в которое я хочу добавить Docker
. Я создал image
, настроил Docker
, но приложение Docker
не хочет запускаться. В приложении, которое я использую Spring Boot
, и PostgresSQL
в базе данных.
Dockerfile:
FROM openjdk:11
ADD build/libs/Coffeetearea-0.0.1-SNAPSHOT.jar Coffeetearea-0.0.1-SNAPSHOT.jar
#EXPOSE 8080:8080
ENTRYPOINT ["java", "-jar", "Coffeetearea-0.0.1-SNAPSHOT.jar"]
docker-compose.yml:
version: '3.1'
services:
app:
container_name: coffeetearea
image: coffeeteareaimage
build: ./
ports:
- "8080:8080"
depends_on:
- coffeeteareadb
coffeeteareadb:
image: coffeeteareadb
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=pass123
- POSTGRES_USER=postgres
- POSTGRES_DB=coffeetearea
application.propertyes:
#Databse
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://coffeeteareadb:5432/coffeetearea
spring.datasource.username=postgres
spring.datasource.password=pass123
spring.jpa.generate-ddl=false
spring.jpa.hibernate.ddl-auto=validate
МОИ ШАГИ в ТЕРМИНАЛЕ:
C:UsersvartanyanIdeaProjectsCoffeetearea>docker-compose up
Creating network "coffeetearea_default" with the default driver
Pulling coffeeteareadb (coffeeteareadb:)...
ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.
Continue with the new image? [yN] y
Pulling coffeeteareadb (coffeeteareadb:)...
ERROR: pull access denied for coffeeteareadb, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Комментарии:
1. Для контейнера базы данных вы имеете в виду использовать стандартный образ, например
image: postgres:13
?2. как я могу это посмотреть? это все, что у меня есть, я больше ничего не добавлял / не писал
Ответ №1:
Ошибка означает, что Docker не может найти изображение с именем coffeeteareadb
локально или на https://hub.docker.com / . Если ваше изображение находится в частном репозитории (это означает, что кто-то из вашей группы уже создал его), вы должны сначала войти в Docker в этот репозиторий. Хотя для частного репозитория ваше имя изображения должно выглядеть как URL: registry.example.com/image-name:tag
.
Если вы хотите coffeeteareadb
использовать обычную базу данных PostgreSQL, вы, вероятно, захотите изменить image
here:
coffeeteareadb:
image: postgres:13 # https://hub.docker.com/_/postgres
Если вы новичок в Docker, an image
похож на исполняемый или двоичный файл, а a container
— это что-то вроде запущенного процесса этого исполняемого файла. An image
состоит из нескольких дополнительных слоев данных: приложения, зависимостей, некоторой базовой конфигурации и т. Д. При запуске образа, который вы создаете container
. Контейнер является экземпляром изображения. Он отличается от изображения тем, что помимо простого приложения в нем есть некоторая информация о том, как его запустить (какие порты сопоставлять, какие тома монтировать и т. Д.). Может быть много контейнеров, использующих один и тот же образ. Поэтому, когда вы попросили выбрать изображение, вам в основном нужно указать, какое приложение вы хотите использовать. Docker будет искать его локально и на хабе, загружать его и создавать из него контейнер. Если вы хотите создать свой собственный образ, вам нужен файл Dockerfile (см. Эту ссылку https://docs.docker.com/engine/reference/builder / ).
Ответ №2:
Похоже, что ваше изображение (coffeeteareadb) не существует на dockerhub, поэтому docker не может его извлечь. Создайте его локально, как coffeeteareaimage (build: buildpath). Или используйте образ PostgreSQL, который находится на dockerhub (изображение: postgresql: последняя версия).