目录

  • 前言
  • shell
  • Dockerfile
  • 执行命令

前言

编写发布脚本,期望实现传不同参数,构建对应不同版本容器。踩了不少坑,总算实现,直接上代码。

shell

将以下内容保存为 demo.sh

#!/usr/bin/env bash
# 定义应用组名
group_name='demo'
# 定义应用名称
app_name='javademo'
# 定义应用版本
app_version=$1
# 定义应用环境
profile_active=$2
echo '----copy jar----'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker rmi ${group_name}/${app_name}:${app_version}
echo '----rm image----'
# 打包编译docker镜像
docker build -f ./Dockerfile -t ${group_name}/${app_name}:${app_version} --build-arg JAR_VERSION=${app_version} .
echo '----build image----'
docker run -p 8088:8088 --name ${app_name} \
-e 'spring.profiles.active'=${profile_active} \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/${app_name}/logs:/var/logs \
-d ${group_name}/${app_name}:${app_version}
echo '----start container----'

Dockerfile

将以下内容保存为 Dockerfile

# 该镜像需要依赖的基础镜像
FROM java:8
# 要想在 FROM 之后使用,必须再次指定
ARG JAR_VERSION
# ENTRYPOINT 只认 ENV 环境变量
ENV JAR_VERSION=${JAR_VERSION}
# 将当前目录下的jar包复制到docker容器的/目录下
ADD target/javademo-${JAR_VERSION}.jar /javademo-${JAR_VERSION}.jar
# 声明服务运行在8088端口
EXPOSE 8088
# 指定docker容器启动时运行jar包,环境变量插值只能使用下面这种写法。
ENTRYPOINT java -jar /javademo-${JAR_VERSION}.jar
# 这种写法不行。
# ENTRYPOINT ["java", "-jar","/javademo-${JAR_VERSION}.jar"]
# 指定维护者的名字
MAINTAINER demo

执行命令

sh ./demo.sh 1.0-SNAPSHOT test

通过docker build --build-arg 传值进 Dockerfile 动态构建容器相关推荐

  1. docker build --build-arg 传参到 Dockerfile

    Docker build 命令 docker build 命令用于使用 Dockerfile 创建镜像. 语法 docker build [OPTIONS] PATH | URL | - OPTION ...

  2. Docker 入门系列(7)- Dockerfile 使用(FROM、RUN、CMD、EXPOSE、ENV、ADD、COPY、ENTRYPOINT、VOLUME、WORKDIR)

    Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 来快速创建自定义的镜像. 1. 基本结构 Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行. ...

  3. 浅谈Docker:DockerLinux安装,镜像管理命令,镜像制作命令,容器管理命令,数据卷,DockerFile,Docker-compose

    什么是Docker? Docker 概念 • Docker 是一个开源的应用容器引擎 • 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc) • ...

  4. 深入浅出Docker原理及实战(三)——制作Dockerfile

    声明:这是我在大学毕业后进入第一家互联网公司学习的内容 深入浅出Docker原理及实战系列第三篇,我主要分享如何制作一个Dockerfile,以及基本命令格式. Dockerfile简介 Docker ...

  5. Linux安装Docker容器环境centos中安装docker-compose容器编排dockerfile文件构建镜像(史上最详细的docker)

    在Linux系统下安装docker容器环境 1.容器介绍 1.1 镜像(Image) 镜像可以用来创建Docker 容器,Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像, 用户甚至可 ...

  6. Kubernetes学习笔记三:Docker安装,Docker使用,编写Dockerfile,制作容器镜像,上传docker镜像

    文章目录 Docker的安装 Docker的使用:docker run命令 查看本地存在的镜像:docker images命令 编写Dockerfile,制作容器镜像 docker build制作镜像 ...

  7. Docker的安装和使用及dockerfile简单使用

    Docker的安装和使用及dockerfile简单使用 一.简介 Docker是一个基于go语言的开源的应用容器引擎,可以将开发者的应用及依赖包打包到一个可移植容器当中,然后发布到任何流行的Linux ...

  8. 从零开始学习docker(零)简单介绍Dockerfile

    如果不使用docker,面临的问题有: 部署非常慢 成本非常高 资源浪费 难于迁移和扩展 可能会被限定硬件厂商 虚拟化技术的优点: 虚拟化技术出现以后,一个物理机可以部署多个App,每个App独立运行 ...

  9. Docker——Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线

    Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线 Dockerfile概述 Dockerfile构建过程 Dockerfile指令说明 实战:构建自己的CentO ...

最新文章

  1. User status for Service Order
  2. VB常用内部函数大全一览表(建议收藏)
  3. shell编程题(三)
  4. 发明喂饭机器人_人类又懒出新高度,老美发明自动喂饭机器人,“君子”动嘴不动手...
  5. Tarjan-有向图
  6. 创建额外域控制器Active Directory(二)
  7. git 出现 Author identity unknown 问题一
  8. MDUKEY超级节点配置及指南(简)
  9. 【浙大版《Python 程序设计》题目集(解)】第3章-14 字符串字母大小写转换(15分)
  10. 用html5 js实现浏览器全屏
  11. 在国内如何使用gmail_如何在Gmail中使用自定义背景
  12. iOS 拓展,icon,尺寸 开发系列 吕文翰
  13. Spark——累加器的理解
  14. 互联网黑话大全 最新词汇 黑话生成器
  15. 计算机实习报告6000字,实习报告6000
  16. 使用log4j将日志输送到控制台、文件或数据库中
  17. 基于GNU radio + HackRF One 实现信号发射与FM接收
  18. Cows in a Row
  19. python+pyqt5+Qt Designer开发GUI vcf生成器
  20. 重温CS1.5(解决卡通模版人物死后不倒的问题,并附模型下载)

热门文章

  1. 47 CO配置-控制-利润中心会计-设置实际数据的控制参数
  2. c语言写数码管,各位大神,如何用C语言实现在数码管上实现1234同时亮
  3. 16进制 hbase phoenix_HBase 和 Phoenix 的使用
  4. batocera游戏整合包_FIFAol3头像包整合
  5. 电脑怎么结束进程_小协漫谈 | 聊聊电脑卡顿那些事
  6. Git/Gitee创建仓库添加文件【1】
  7. 【转】基于Token的身份验证原理
  8. MSP, CMP傻傻分不清楚?一文读懂云管理的春天
  9. linux内核那些事之Memory protection keys(硬件原理)
  10. 如何写一篇合格的论文(清华大学刘知远)