老规矩三步走,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 .
![](https://ywhao.bitworkshop.cn/wp-content/uploads/2023/11/image.png)
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)
Comments NOTHING