新建项目
- 创建项目目录
mkdir -p /data/projects/hello-world
cd /data/projects/hello-world
- 上传Jar包并授权
# scp 或其他方式上传jar包到/data/projects/hello-world/hello-world.jar
chmod 777 hello-world.jar
- 创建Dockerfile
FROM openjdk:17
VOLUME /tmp
COPY hello-world.jar app.jar
ENV TZ=Asia/Shanghai
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
- 创建镜像
docker build -t hello-world .
docker images
- 运行容器
docker run -d -p 9925:9925 --restart=always --name=hello-world hello-world
# -p 9925:9925 端口映射 主机:容器
# -d 后台运行
# --restart=always 重启策略
# --name=hello-world 容器名
# hello-world 镜像名
# -v /data/hello-world:/data/outer-data 目录映射 宿主机目录:容器内部目录
docker ps -a
- 访问测试
更新项目
- 上传Jar包并授权
# scp 或其他方式上传jar包到/data/projects/hello-world/hello-world-v2.jar
chmod 777 hello-world-v2.jar
- 复制项目到对应的容器
docker cp hello-world-v2.jar hello-world:/app.jar
- 重新启动容器
docker restart hello-world
docker ps -a
其他
docker logs -f hello-world
# 查看最后100行日志
docker logs -f --tail=100 hello-world
# 例:更新启动行为
docker update --restart=always hello-world
docker stop hello-world
docker rm -f hello-world
docker rmi hello-world
systemctl enable docker.service
docker exec -it hello-world bash