当前位置:   article > 正文

实战:用dockerfile创建镜像实现springboot项目容器化_springboot dockerfile

springboot dockerfile

前言

docker容器化方案是当下流行的服务部署方式,在软件领域举足轻重。我公司的测试、线上环境都采用docker容器化部署,并结合CI/CD持续交付,大大降低了运维成本。本文结合实际的项目经验,详细介绍dockerfile的运用,为下一步的持续交付做准备。当然对于docker的环境的安装本文不再累述,可直接按照官方文档进行搭建。

技术积累

docker基本操作命令

命令描述
docker --version# 查看版本号
docker info# 查看docker的信息
docker search img_name# 搜索名为img_name的镜像
docker pull img_name# 将名为img_name的镜像下载到本地
docker images# 查看本地已有的镜像
docker rmi img_name# 删除名为img_name的镜像
docker ps# 列出正在运行的容器
docker ps -a# 列出所有的容器
docker run -itd --name=container_name img_name# 使用img_name以交互模式在后台运行分配了伪终端的名为container_name的镜像
docker start container_name/container_id# 通过容器名字或ID启动容器
docker stop container_name/container_id# 通过容器名字或ID停止容器
docker restart container_name/container_id# 通过容器名字或ID重启容器
docker rm container_name/container_id# 通过容器名字或ID删除容器
docker exec -it container_name/container_id /bin/bash# 通过容器名字或ID进入容器
exit# 退出容器
docker build -t iamge_name:version .#生成镜像 -t 后面接镜像名称:版本号,若不指定版本号则默认为latest -f dockerfile路径,如果是当前目录可用 . 表示当前运行目录 --add-host 可以使用一个或多个 --add-host 标志将其他主机添加到容器的 /etc/hosts 文件中 --no-cache 构建镜像时不使用缓存 --network 在构建过程中为 RUN 指令设置网络模式

dockerfile简介

dockerfile是构建镜像的一种方式,开发人员通过编写dockerfile文件进行镜像构建,构建成功的镜像可以容器化。

dockerfile指令说明

命令描述
FROM:指定基础镜像
MAINTAINER:维护者信息
RUN:构建镜像时所需要执行的命令
CMD:用于容器在真正运行后所需要执行的命令,CMD和RUN其实都是执行命令,但是CMD用于最后面 注:每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条 CMD 命令,只有最后一条会被执行。
ENTRYPOINT:其实和CMD差不多,具体区别:CMD # 指定容器启动时要执行的命令,只有最后一个会生效,可被替代 ;ENTRYPOINT # 指定容器启动时要执行的命令,可以追加命令。注:每个 Dockerfile 只能有一条 ENTRYPOINT命令,如果指定了多条 ENTRYPOINT命令,只有最后一条会被执行。
ADD:复制文件或目录到容器,如果是压缩文件,会自动解压
COPY:拷贝文件到容器内,与ADD一样但不能解压
LABEL:用于为镜像添加元数据,一个标识
ENV:设置环境变量
EXPOSE:指定于外界交互的端口
VOLUME:文件挂载,容器与宿主机之间的文件共享功能,等同于docker run时的参数-v
WORKDIR:工作目录相当于cd
USER:指定运行容器时的用户名
ARG:设置变量
ONBUILD:该指令只有在当该镜像被用作其他镜像的基础镜像时,才会生效

实战演示

将一个springboot项目用dockerfile构建为镜像,并容器化部署
将springboot项目jar上传至服务器 /home/test/test_demo 目录下

创建dockerfile

vim dockerfile
  • 1
# this is test_demo dockerfile
# version 1.0
# 基础镜像
FROM openjdk:8-jre
# 维护人
MAINTAINER senfel<187@sina.cn>
# 创建目录
RUN mkdir -p /home/app
# 拷贝项目jar
COPY test-demo-0.0.1-SNAPSHOT.jar /home/app/app.jar
# 执行命令启动jar
ENTRYPOINT ["java","-jar","/home/app/app.jar"]
# 暴露端口
EXPOSE 9999
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述

创建挂载目录构建dockerfile

》》》创建挂载目录

mkdir logs
  • 1

》》》构建dockerfile

docker build -t test-demo:v1.0 .
  • 1

等待镜像构建完成
在这里插入图片描述

》》》查看镜像

docker images | grep demo
  • 1

在这里插入图片描述

启动容器完成验证

》》》启动容器

docker run -d --restart=always --name demo -p 8888:9999 -v /home/test/test_demo/logs:/opt/logs/test-demo  test-demo:v1.0
  • 1

-d 后台运行
–name 容器名称
-p 端口映射
-v 目录挂载

》》》查看启动日志

docker logs --tail 300 -f demo
  • 1

在这里插入图片描述

》》》启动成功查看映射端口是否开启

netstat -nplt | grep 8888
  • 1

在这里插入图片描述

》》》页面请求验证
在这里插入图片描述
请求成功。

写在最后

用dockerfile创建镜像实现springboot项目容器化比较简单,只要熟记docker命令并按照要求编写dockerfile即可。dockerfile通过build构件镜像,可以在任意docker环境启动提供服务,大大增加服务的可移植性和减少运维成本。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/375962?site
推荐阅读
相关标签
  

闽ICP备14008679号