创建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
将容器桥接到指定的网络