Docker部署SpringBoot项目记(docker-compose方式)

发布于 2023-11-29  9 次阅读


老规矩三步走,Dockerfile->docker-compose->反复调试

1、Dockerfile

这一步就是制作镜像,构建运行环境。项目结构如下:

anniversary
├── app
│ └── anniversary.jar
├── docker-compose.yml
└── Dockerfile

Dockerfile:

# FROM 指定base镜像
FROM openjdk 
# /表示和Dockerfile同级目录,复制项目包到镜像的app目录下
ADD /app/anniversary.jar /app/anniversary.jar
# 更新文件的时间戳,好像没有也没关系
RUN bash -c 'touch /app/anniversary.jar'
# 执行命令
ENTRYPOINT ["java","-jar","/app/anniversary.jar"]

在Dockerfile一级目录下执行命令制作镜像:

# 镜像anniversary版本为1.0
docker image build -t anniversary:1.0 .

2、docker-compose

volumes:挂载,能将项目文件同步到容器中,项目文件修改则容器也会同步修改,推荐使用。

version: '3'
services:
  anniversary:
    image: "anniversary:1.0"
    volumes:
      - "./app:/app"
    working_dir: "/app"

    networks:
      http-group:
      db-net:
    deploy:
      labels:
        traefik.enable: "true"
        traefik.http.services.anniversary.loadbalancer.server.port: 80
        traefik.http.routers.anniversary-unsecure.rule: Host(`anniversary.bitworkshop.cn`)
        traefik.http.routers.anniversary-unsecure.entrypoints: web
        traefik.http.routers.anniversary.rule: Host(`anniversary.bitworkshop.cn`)
        traefik.http.routers.anniversary.entrypoints: websecure
        traefik.http.routers.anniversary.tls.certresolver: letsencrypt

networks:
    http-group:
      external:
        name: traefik
    db-net:
        external:
          name: db-net

在docker-compose.yml一级目录下执行命令启动服务(service):

docker stack deploy -c docker-compose.yml anniversary --with-registry-auth

3、一些常用的命令

# 删除挂掉的容器
docker rm `docker ps -a|grep Exited|awk '{print $1}'`
# 查看docker服务
docker service ls
# 删除docker服务
docker service rm xxx(ID/Name)
# 查看docker容器
docker ps
# 查看docker容器日志
docker logs xxx(容器ID)