容器化部署 #

一、Dockerfile编写 #

1.1 基础镜像 #

dockerfile
FROM openjdk:17-jdk-slim

WORKDIR /app

COPY target/user-service.jar app.jar

ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms256m -Xmx512m"

EXPOSE 8001

ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]

1.2 多阶段构建 #

dockerfile
FROM maven:3.9-eclipse-temurin-17 AS builder

WORKDIR /build
COPY pom.xml .
COPY src ./src

RUN mvn clean package -DskipTests

FROM eclipse-temurin:17-jre

WORKDIR /app

COPY --from=builder /build/target/*.jar app.jar

ENV TZ=Asia/Shanghai

EXPOSE 8001

ENTRYPOINT ["java", "-jar", "app.jar"]

二、Docker Compose #

2.1 基础服务 #

yaml
version: '3.8'

services:
  nacos:
    image: nacos/nacos-server:v2.3.0
    container_name: nacos
    environment:
      - MODE=standalone
    ports:
      - "8848:8848"
      - "9848:9848"
    networks:
      - spring-cloud-net

  mysql:
    image: mysql:8.0
    container_name: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=cloud
    ports:
      - "3306:3306"
    networks:
      - spring-cloud-net

  redis:
    image: redis:7
    container_name: redis
    ports:
      - "6379:6379"
    networks:
      - spring-cloud-net

networks:
  spring-cloud-net:
    driver: bridge

2.2 微服务 #

yaml
services:
  user-service:
    build: ./user-service
    container_name: user-service
    environment:
      - NACOS_SERVER_ADDR=nacos:8848
      - MYSQL_HOST=mysql
      - REDIS_HOST=redis
    ports:
      - "8001:8001"
    depends_on:
      - nacos
      - mysql
      - redis
    networks:
      - spring-cloud-net

  order-service:
    build: ./order-service
    container_name: order-service
    environment:
      - NACOS_SERVER_ADDR=nacos:8848
    ports:
      - "8002:8002"
    depends_on:
      - nacos
    networks:
      - spring-cloud-net

  gateway:
    build: ./gateway
    container_name: gateway
    environment:
      - NACOS_SERVER_ADDR=nacos:8848
    ports:
      - "8080:8080"
    depends_on:
      - nacos
    networks:
      - spring-cloud-net

三、启动命令 #

bash
# 启动所有服务
docker-compose up -d

# 查看日志
docker-compose logs -f user-service

# 停止服务
docker-compose down

# 重新构建
docker-compose up -d --build

四、总结 #

要点 说明
Dockerfile 构建镜像
Docker Compose 编排服务
网络 服务间通信

接下来让我们学习 Kubernetes部署

最后更新:2026-03-28