Docker部署sprintboot后端项目

创建Docker网络

docker network create icjs

部署Redis

docker run -d \
  --network icjs \
  --name redis \
  -p 6379:6379 \
  redis:latest

数据持久化

docker run --restart=always --network icjs -p 6379:6379 --name redis -v /opt/docker/redis/redis.conf:/etc/redis/redis.conf -v /opt/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass icjs#cc

部署MySQL

docker run --name mysql --network icjs --restart=always --privileged=true \
-v /opt/docker/mysql/data:/var/lib/mysql \
-v /opt/docker/mysql/conf.d:/etc/mysql/conf.d \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=icjs#cc -p 3306:3306 -d mysql:latest

编写Dockerfile

# 使用 JDK 17 的基础镜像
FROM ghcr.io/graalvm/graalvm-ce:latest

# 设置工作目录
WORKDIR /app

RUN echo "Asia/Shanghai" > /etc/timezone
RUN mkdir -p /app/logs
RUN mkdir -p /usr/local/file
RUN mkdir -p /usr/local/pay-cert
# 将 jar 包复制到镜像中(假设 jar 包在当前目录)
COPY nice-coding-backend.jar /app/nice-coding-backend.jar

# 声明需要持久化的目录
VOLUME ["/usr/local/file", "/usr/local/pay-cert"]

EXPOSE 8081

# 启动 jar 包
ENTRYPOINT ["java", "-Xms5g", "-Xmx5g", "-Dfile.encoding=utf-8", "-jar", "/app/nice-coding-backend.jar", "--spring.profiles.active=prod"]

部署后端

docker run -e REDIS_HOST=redis -e REDIS_PORT=6379 -d \
  --network icjs \
  -p 8026:8081 \
  -v $(pwd)/data/file:/usr/local/file \
  -v $(pwd)/data/pay-cert:/usr/local/pay-cert \
  --name nice-coding-backend \
  nice-coding-backend

如果有相关中间件部署时需要加 --network icjs 将容器桥接到指定的网络

你可能感兴趣的:(运维技术笔记,docker,容器,运维)