Administrator
发布于 2022-01-17 / 2 阅读
0
0

Docker Compose实战:一键部署Java应用

Docker Compose实战:一键部署Java应用

本文通过实际案例,演示如何使用Docker Compose一键部署完整的Java应用栈。

一、项目结构

project/
├── docker-compose.yml
├── app/
│   ├── Dockerfile
│   └── target/app.jar
├── mysql/
│   └── init.sql
└── nginx/
    └── nginx.conf

二、Dockerfile

FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

三、docker-compose.yml

version: '3.8'
services:
  app:
    build: ./app
    ports:
      - "8080:8080"
    depends_on:
      - mysql
      - redis
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/mydb
      - SPRING_DATASOURCE_PASSWORD=123456
      - SPRING_REDIS_HOST=redis
    restart: always

  mysql:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=mydb
    volumes:
      - mysql_data:/var/lib/mysql
      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
    restart: always

  redis:
    image: redis:7
    ports:
      - "6379:6379"
    restart: always

  nginx:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - app
    restart: always

volumes:
  mysql_data:

四、Nginx配置

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://app:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

五、启动命令

# 构建并启动
docker-compose up -d --build

# 查看日志
docker-compose logs -f app

# 停止
docker-compose down


评论