Este é um tutorial simples para ajudá-lo a usar o Docker localmente para o desenvolvimento do projeto Spring Boot. O processo de desenvolvimento real pode variar dependendo da complexidade e necessidades do projeto
O docker local desenvolve o projeto springboot e atualiza o código localmente no contêiner docker em tempo real
Para implementar atualizações em tempo real no contêiner do Docker após a atualização do código local, você pode montar o diretório de código local no contêiner do Docker e usar a função de implantação ativa do Spring Boot. Dessa forma, quando você modificar o código localmente, o aplicativo dentro do contêiner Docker recarregará automaticamente o código mais recente e refletirá as alterações em tempo real. A seguir estão as etapas específicas:
- Escrevendo um Dockerfile: Crie um Dockerfile para construir uma imagem contendo um aplicativo Spring Boot. Certifique-se de incluir as dependências necessárias para depuração e implantação ativa, como argumentos JVM e plug-ins DevTools, em seu Dockerfile. Aqui está um exemplo de Dockerfile:
Dockerfile
# 基于Java 11的官方Spring Boot镜像
FROM adoptopenjdk:11-jre-hotspot
# 设置工作目录
WORKDIR /app
# 复制应用程序的JAR文件到镜像中
COPY target/your-application.jar app.jar
# 设置环境变量,启用Spring Boot热部署
ENV SPRING_PROFILES_ACTIVE=dev
ENV SPRING_DEVTOOLS_REMOTE_SECRET=mysecret
# 设置启动命令
CMD ["java", "-jar", "-Dspring.devtools.remote.secret=${SPRING_DEVTOOLS_REMOTE_SECRET}", "app.jar"]
Observe que neste Dockerfile configuramos SPRING_PROFILES_ACTIVE=dev
para habilitar o ambiente de desenvolvimento e usar SPRING_DEVTOOLS_REMOTE_SECRET
uma chave remota com o plug-in DevTools especificado.
- Criar docker-compose.yml: crie um arquivo docker-compose.yml para definir a configuração do serviço e do contêiner. Aqui, montamos o diretório de código em um contêiner do Docker para atualizações ao vivo. Aqui está um exemplo docker-compose.yml:
yaml
version: '3'
services:
spring-app:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
volumes:
- ./src:/app/src
- ./target:/app/target
Neste docker-compose.yml, ./src
montamos o diretório no /app/src
diretório do contêiner para que o código possa ser sincronizado em tempo real. Da mesma forma, também ./target
montamos o diretório no /app/target
diretório do contêiner para manter os resultados da compilação do aplicativo sincronizados.
- Crie e inicie o contêiner: crie e inicie o contêiner do Docker com os seguintes comandos:
bash
docker-compose up --build
Seu aplicativo Spring Boot agora deve estar em execução em um contêiner do Docker, com as alterações de código refletidas no contêiner em tempo real. Você pode editar o código localmente e, após salvar, o aplicativo dentro do contêiner do Docker recarregará automaticamente o código mais recente.
Observe que pode haver alguma sobrecarga de desempenho ao usar o recurso de implementação ativa, portanto, em um ambiente de produção, a implementação ativa deve ser desativada e o aplicativo implementado usando um pacote JAR pré-compilado. Mas na fase de desenvolvimento, a implantação ativa é muito útil, o que pode acelerar a iteração do desenvolvimento e o processo de depuração.