背景
环境:CentOS7
项目:Springboot: docker-demo
CentOS7安装Docker
Docker部署vue项目
Dockerfile创建镜像
- 创建Dockerfile文件
# 当前镜像基于openjdk17镜像
FROM openjdk:17.0.2-slim
# 容器对外暴露8090端口(此处可不暴露,创建容器时做端口映射即可)
EXPOSE 8090
# 将主机jar包拷贝至镜像opt文件夹下
ARG JAR_FILE=./docker-demo.jar
ADD ${JAR_FILE} /opt/docker-demo.jar
# 将主机docker-demo项目配置文件拷贝至镜像opt/config文件夹下
ARG CONF_FILE=./config/application.properties
ADD ${CONF_FILE} /opt/config/application.properties
# 启动容器后执行的命令
ENTRYPOINT ["java", "-jar", "/opt/docker-demo.jar", "--add-opens=java.base/java.lang=ALL-UNNAMED", "--spring.config.location=/opt/config/"]
- 通过Dockerfile创建镜像
- 当前命令必须在Dockerfile文件所在目录下执行
- 命令行后有个点号
docker build -t service-demo:1.0.0 .
- 查看镜像
docker images

docker-compose生成容器
- 命令方式生成容器
docker run -it -p 8090:8080 --name=service-test service-demo:1.0.0
- 安装docker-compose(已安装忽略)
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
- 测试安装结果
docker-compose --version

- 创建docker-compose.yml文件
# docker-compose版本
version: '3'
# 可配置多个
services:
server-test:
# 新容器名称
container_name: server-test
# 来源镜像及版本
image: service-demo:1.0.0
# 指定时区
environment:
TZ: Asia/Shanghai
# docker启动后立即启动该容器
restart: always
# 将8080端口对外映射为8090
ports:
- 8090:8080
# 挂载主机项目下该项目jar包和配置文件信息至容器内(更新主机文件内容,对应容器挂在文件也会更新)
volumes:
- ./config:/opt/config
- ./docker-demo.jar:/opt/docker-demo.jar
# 指定自定义网络(相同网络下不同容器间可以通过容器名代替ip互相访问)
networks:
- docker-host
networks:
docker-host:
external: true
- 创建容器
docker-compose up -d
验证
- 查看容器
docker ps

- 测试接口

安装可视化工具portainer
- 查看portainer镜像
docker search portainer

- 拉取镜像portainer/portainer
docker pull portainer/portainer
- 创建portainer容器
# 启动镜像
docker run -d -p 9000:9000 --restart=always \-v /var/run/docker.sock:/var/run/docker.sock \
--name portainer portainer/portainer
- 验证

本文介绍了如何在CentOS7系统中安装Docker,并使用Dockerfile构建Springboot应用的镜像,同时通过Docker-compose设置端口映射、容器命名和挂载卷,实现应用的部署。此外,还提到了使用docker-compose.yml文件进行服务配置以及Portainer作为可视化管理工具的安装和验证。
1666





