Docker 是当前最主流的应用部署方式。这篇讲 SpringBoot 项目如何容器化,从编写 Dockerfile 到使用 Docker Compose 编排多容器。

一、Dockerfile

FROM openjdk:17-jdk-alpine

WORKDIR /app

COPY target/seckill-system.jar app.jar

EXPOSE 9090

ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=prod"]

多阶段构建

# 第一阶段:编译
FROM maven:3.8-openjdk-17 AS builder
WORKDIR /build
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests

# 第二阶段:运行
FROM openjdk:17-jdk-alpine
WORKDIR /app
COPY --from=builder /build/target/*.jar app.jar
EXPOSE 9090
ENTRYPOINT ["java", "-jar", "app.jar"]

二、Docker Compose

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: seckill_db
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

  app:
    build: .
    ports:
      - "9090:9090"
    depends_on:
      - mysql
      - redis
    environment:
      DB_HOST: mysql
      DB_USER: root
      DB_PASSWORD: 123456
      SPRING_REDIS_HOST: redis

volumes:
  mysql_data:

💡 觉得有用的话,点赞 + 关注【张老师技术栈】吧!

更多推荐