当前位置:   article > 正文

docker-compose部署Springboot_docker-compose 部署springboot项目

docker-compose 部署springboot项目

docker-compose部署Springboot

1.环境准备

目录构建

此目录结构用于docker-compose执行挂载

├── mysql
│   ├── data
│   └── init.sql
├── redis
│   ├── data
│   └── redis.conf
├── nginx
│   ├── config  
│   │   ├── default.conf    # 默认的配置文件
│   └── app     # 存放前端打包后的文件
├── java
│   ├── Dockerfile  # 构建java容器
│   └── app.jar     
└── LICENSE

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

default.conf

server {
    listen 80;
    server_name localhost;
    location / {
        root   /server;
        index  index.html index.htm;
        try_files $uri  $uri/ /index.html;
    }
    location /api {
        client_max_body_size 50M;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://java-container:8096; # 此处用容器名称代替IP地址
        rewrite ^.api/?(.*)$ /$1 break;
        proxy_http_version 1.1;
        proxy_read_timeout 3600s;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

Dockerfile


FROM  openjdk:8-jdk

MAINTAINER author

RUN mkdir -p /home/server

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

WORKDIR /home/server

# 端口
ENV API_PORT=8096

#启动自行加载
ENV PARAMS="--server.port=${API_PORT} --spring.profiles.active=docker,auth,framework "

ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar /home/server/engine-api.jar ${PARAMS}"]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

2.docker-compose

version: '3'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql-container
    environment:
      MYSQL_ROOT_PASSWORD: "you-password"
      TZ: "Asia/Shanghai"
#    ports:
#      - "3306:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql  # mysql数据存储目录挂载
      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql #初始化mysql容器时sql脚本  
    command:
      --max_connections=1000
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --default-authentication-plugin=mysql_native_password
    networks:
      - my-network

  redis:
    image: redis:3.2
    container_name: redis-container
#    ports:
#      - "6379:6379"
    command: redis-server --requirepass 'you-password'
    volumes:
      - ./redis/data:/data
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf  # 映射 Redis 配置文件
    networks:
      - my-network
      
  nginx:
    image: nginx:1.22
    container_name: nginx-container
    ports:
      - "80:80"
    volumes:
      - ./nginx/config/:/etc/nginx/conf.d
      - ./nginx/app:/server
    networks:
      - my-network

  java:
    container_name: java-container
    build:
      context: ./java
      dockerfile: Dockerfile
    volumes:
      - ./java:/home/server
    networks:
      - my-network

networks:
  my-network:
    driver: bridge
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

注意:java配置文件中的mysql、redis连接地址修改为对应容器名称

每次jar包版本更新之后,只需要替换./java目录下的jar包,然后重启java-container容器

docker-compose restart java-container

同理nginx配置文件更新之后,只需要重启nginx-container容器

docker-compose restart nginx-container

docker-compose常用命令

  • docker-compose up:启动容器组,根据 docker-compose.yml 文件中的配置创建和启动容器。

  • docker-compose down:停止并移除容器组,包括容器、网络和卷等相关资源。

  • docker-compose ps:显示当前运行的容器组中的容器状态。

  • docker-compose logs:显示容器组中的容器日志。

  • docker-compose exec:在运行的容器中执行命令。

  • docker-compose build:根据 docker-compose.yml 文件中的配置构建镜像。

  • docker-compose images:列出容器组中使用的镜像。

  • docker-compose pull:拉取在 docker-compose.yml 文件中定义的服务所使用的镜像。

  • docker-compose restart:重启容器组中的服务。

  • docker-compose stop:停止容器组中的服务。

  • docker-compose pause:暂停容器组中的服务。

  • docker-compose unpause:取消暂停容器组中的服务。

  • docker-compose down -v:停止并移除容器组,并移除所有相关的卷。

  • docker-compose down --rmi all 会停止容器并删除容器相关资源,还会删除与服务关联的所有镜像。

  • docker-compose config:验证并显示合并后的 Compose 文件。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/220963
推荐阅读
相关标签
  

闽ICP备14008679号