# syntax=docker/dockerfile:1
FROM eclipse-temurin:17-jdk-jammy as base
WORKDIR /app
COPY .mvn/ .mvn
COPY mvnw pom.xml ./
RUN ./mvnw dependency:resolve
COPY src ./src
FROM base as development
CMD ["./mvnw", "spring-boot:run", "-Dspring-boot.run.profiles=postgres", "-Dspring-boot.run.jvmArguments='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000'"]
FROM base as build
RUN ./mvnw package
FROM eclipse-temurin:17-jre-jammy as production
EXPOSE 8080
COPY --from=build /app/target/demo-0.0.1-SNAPSHOT-*.jar /demo-0.0.1-SNAPSHOT.jar
CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/demo-0.0.1-SNAPSHOT.jar"]
Bom dia Breno_Henrrique !
Obrigado por responder esta questão!
Então, esses arquivos acima, quase conseguem criar o que preciso. Mas o que preciso é, criar a imagem do meu projeto spring, imagem do meu postgres contendo os 5 clientes cadastrados, e disponibilizar, para um outro testar meu CRUD ?
Desde já Obrigado!
Se não me engano não é possível criar uma imagem pelo docker-compose.yml, mas nele é possível apontar o Dockerfile que gera a imagem quando executado pelo docker-compose. Só você passar o dockerfile da forma que mostrei.
Sobre o bd, você já tem ele criado e com esses dados e quer subir o container dele? Ou no momento que executar o docker-compose, você quer criar criar o bd e inserir esses dados?
Então Breno_Henrrique, esse é o ponto: por exemplo: recebi um teste para executar o qual tenho que desenvolver um CRUD de cliente: construi o sistema, na minha máquina testei e inseri 6 clientes no banco: Ou sejá, na minha máquina funciona, sendo asssim, queria fazer um Dockfile e um docker-compose.yml, para que quando alguém baixar do github, possa executar o porjeto no docker e avaliar o sistema : quanto ao postgres, não sei se é possível criar uma imagem e um container dessa imagem, que ja tenha os 6 clientes cadastrados ? se sim, qual a estratégia para fazer isso?
Obrigado!
Para compartilhar os dados do Postgres em imagens Docker, você precisa criar um volume no docker-compose que vai espelhar os arquivos de dados do banco para um pastar externa, então você vai disponibilizar essa pasta junto com o Dockfile e o docker-compose.yml, assim quando a pessoa der um docker-compose up o container vai ser montado com os dados do seu banco.
Verifique a pagina oficial do Postgres no Docker Hub, para ver como montar o volume de dados.