Docker Compose 启动jar包项目
参考文章安装Docker
和Docker Compose
点击跳转
配置
创建一个文件夹存放项目例如mydata
mkdir /mydata
上传jar
包
假设我的jar
包名称为goudan.jar
编写dockerfile
文件
vim app-dockerfile
按键盘上的i
进行编辑
# 使用jdk8
FROM openjdk:8-jre
# 设置时区 上海
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
# 创建镜像里的工作目录
WORKDIR /mydata/app
# 复制 JAR 包
COPY goudan.jar /mydata/app/goudan.jar
# 创建日志目录并赋予权限(有需要加上)
RUN mkdir -p /mydata/app/logs \
&& chmod -R 777 /mydata/app/logs
# Java 调优参数(示例配置,按需调整)
ENV JAVA_OPTS="-Xmx512m -Xms256m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mydata/app/logs"
# 启动命令(包含日志清理策略)
CMD java $JAVA_OPTS -Dlogging.file.path=/mydata/app/logs -jar goudan.jar
编辑完成后esc
案件退出编辑, 输入:wq
保存并退出
新建docker-compose.yml
文件
vim docker-compose-goudan.yml
添加内容
services:
goudan-java-web:
build:
context: /mydata #指定dockerfile存在的目录
dockerfile: app-dockerfile #文件名称
container_name: goudan-java-web #容器名称
#network_mode: host #使用主网络network_mode: host #使用主网络
ports:
- 2000:2000 #映射端口 左边是本机 右边是容器里的
volumes:
- /mydata/home:/mydata/app/home #单独映射文件 将本机的地址映射到容器里的/mydata/app/home
- /etc/localtime:/etc/localtime #使用系统时间
environment:
TZ: Asia/Shanghai #时区
logging:
driver: json-file
options:
max-size: 10m # 单个日志文件最大 10MB
max-file: 3 # 最多保留 3 个日志文件
当前项目目录为
mydata
--|goudan.jar
--|app-dockerfile
--|docker-compose-goudan.yml
构建和启动服务
docker-compose -f /mydata/docker-compose-web.yml up -d
-f
表示指定文件如果不写, 默认为docker-compose.yml
文件
-d
让容器在后台运行
可以使用以下命令查看容器是否正常运行
docker ps -a
停止和清理服务
docker-compose -f /mydata/docker-compose-web.yml down
会停止并删除由 docker-compose-web.yml
创建的容器和网络
停止指定容器
docker container stop 802 #802为容器自己的id
docker ps -a #查看容器id
删除容器
docker container rm 802 #802为容器自己的id
删除镜像
docker image rm 802 #802为镜像id
查看镜像
docker images
增加滚动更新功能
修改docker-compose-goudan.yml
services:
goudan-java-web:
build:
context: /mydata
dockerfile: app-dockerfile
#container_name: goudan-java-web 删除容器名称
ports:
- 2000:2000
volumes:
- /mydata/home:/mydata/app/home
- /etc/localtime:/etc/localtime
environment:
TZ: Asia/Shanghai
logging:
driver: json-file
options:
max-size: 10m
max-file: 3
deploy:
replicas: 1 # 设置服务的副本数量
update_config:
parallelism: 1 # 每次更新的容器数量
delay: 10s # 每次更新之间的间隔时间
rollback_config:
parallelism: 1 # 回滚时每次操作的容器数量
delay: 10s # 回滚时每次操作之间的间隔时间
启动命令
docker-compose -f ./docker-compose-web.yml up -d --build
查看日志
实时跟踪日志
docker logs -f 802 #802为容器id