最近公司项目需要docker化,项目所使用的框架是springboot,linux环境。第一次接触docker化方面的技术。做的时候,所接触的新知识比较多,留下此文,以便以后用到的时候快速入手。

修改maven  pom.xml 文件

<properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
<java.version>1.7</java.version>
<project.codeName>projectName</project.codeName>
<project.repository>docker.xw.com.cn</project.repository>
<project.moduleName>microdocc</project.moduleName>
</properties>

引入docker-maven-plugin插件

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.</version>
<configuration>
<serverId>xw-docker-registry</serverId>
<imageName>${project.repository}/${project.codeName}/${project.moduleName}</imageName><!-- 镜像名称 -->
<forceTags>true</forceTags>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>src/main/docker</dockerDirectory><!-- Dockerfile文件地址 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory><!--项目构建输出目录/ -->
<include>${project.build.finalName}.jar</include><!--打包出来的jar名称-->
</resource>
</resources>
</configuration>
</plugin>

编写Dockerfile文件

FROM jdk1..0_25

# Set the timezone.
RUN echo "Asia/Shanghai" > /etc/timezone
RUN dpkg-reconfigure -f noninteractive tzdata # Make logs dir
RUN mkdir -p /opt/file/logs # Add the jar and run
ADD ifle.jar /opt/file/ifle.jar
WORKDIR /opt/file
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","file.jar"]

Dockerfile 文件释意

使用 # 来注释
FROM 指令告诉 Docker 使用哪个镜像作为基础

RUN 开头的指令会在创建中运行, 比如安装一个软件包, 在这里使用 apt-get 来安装了一些软件

 

RUN

格式为 RUN <command> 或 RUN
["executable", "param1", "param2"] 。
前者将在 shell 终端中运行命令, 即 /bin/sh -c ;后者则使用 exec 执行。 指定使用其它终端可以通过
第二种方式实现, 例如 RUN ["/bin/bash",
"-c", "echo hello"] 。
每条 RUN 指令将在当前镜像基础上执行指定命令, 并提交为新的镜像。 当命令较长时可以使用 \ 来换
行。

 

ADD

格式为 ADD <src> <dest> 。
该命令将复制指定的 <src> 到容器中的 <dest> 。 其中 <src> 可以是Dockerfile所在目录的一个相对路
径;也可以是一个 URL;还可以是一个 tar 文件( 自动解压为目录)

WORKDIR

WORKDIR 为后续的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目录。

ENTRYPOINT

两种格式:
ENTRYPOINT ["executable", "param1",
"param2"]
ENTRYPOINT command param1 param2 ( shell中执行) 。
配置容器启动后执行的命令, 并且不可被 docker run 提供的参数覆盖。
每个 Dockerfile 中只能有一个 ENTRYPOINT , 当指定多个时, 只有最后一个起效

执行maven命令生成镜像

mvn clean package docker:build -Ptest
-DskipTests=true  -DpushImageTag

docker images 命令查看生产的镜像

启动docker 镜像生成 容器

执行如下命令:

docker run --name  projectName-1.0.5 -p 
9006:8080  -d  -v /app/conf/projectName/application.properties:/opt/test-Project/application.properties -v /app/logs/projectName3:/tmp/logs/projectName 
 docker.xw.com.cn/projectName/microdocc   /bin/bash

解析docker run 命令

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令, 可以执行:runoob@runoob:~$ docker run -it nginx:latest /bin/bash

==========================================================================================

使用 hostPort:containerPort
格式本地的 5001 端口映射到容器的 5000
端口, 可以执行:$ sudo docker run -d -p 5001:5000 training/webapp python app.py

==========================================================================================

使用 -v 标记也可以指定挂载一个本地主机的目录到容器中去。

==========================================================================================

$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp
training/webapp python app

上面的命令加载主机的 /src/webapp 目录到容器的 /opt/webapp 目录。 这个功能在进行测试的时候十
分方便, 比如用户可以放置一些程序到本地目录中, 来查看容器是否正常工作。

==========================================================================================

在使用 -d 参数时, 容器启动后会进入后台。

==========================================================================================

标红的参数为,镜像的 仓库全名。 --name 后的参数为 ,运行容器的名称,新起的名字。

参考:【Docker从入门到实践】

springboot 项目 docker化部署的更多相关文章

  1. SpringBoot项目docker化

    前言 有很多种方案构建Docker镜像,包括Dockerfile构建.maven插件构建,这里我使用了最简单的Dockerfile构建的. 一.安装Docker 我的虚拟机系统是CentOS7,需要是 ...

  2. 使用Gitlab-CI 实现NetCore项目Docker化并部署到阿里云K8S

    使用Gitlab-CI 实现NetCore项目Docker化并部署到阿里云K8S 先行条件: 1.了解NetCore项目基础命令,如dotnet publish   等几个常用命令. 2.了解Dock ...

  3. 从头认识一下docker-附带asp.net core程序的docker化部署

    从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...

  4. SpringBoot项目设置热部署

    记录一个SpringBoot 设置热部署(修改项目之后,项目自动重启)实例 POM.XML 文件 <!-- 配置springBoot项目的热部署启动 --> <dependency& ...

  5. Eclipse中创建新的SpringBoot项目(打包并且部署到tomcat)

    Spring-boot因为其对jar包的高度集成以及简化服务配置,快速部署等的优点,逐渐成为Java开发人员的热衷的框架.下面演示一下怎么在Eclipse中新建Spring-boot项目以及打包部署. ...

  6. SpringBoot使用Docker快速部署项目

    1.简介 建议阅读本文最好对Dokcer有一些了解 首先我们先了解一下Docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器 ...

  7. springboot项目容器化

    创建一个简单的springboot项目,依赖中加入: 编写一个Restfull接口: 编写启动类: 启动项目,浏览器访问该接口,得到想要的结果.下面,就将这个项目进行Docker容器化(applica ...

  8. FastDfs集群docker化部署

    初识分布式文件系统FastDFS- 1.分布式与集群的区别 区别:集群是个物理形态,分布式是个工作方式.只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道:一个程序或系统,只要运行 ...

  9. 基于vue+springboot+docker网站搭建【七】制作后端spring-boot的docker镜像部署

    制作spring-boot的docker镜像并部署 一.下载后端项目:https://github.com/macrozheng/mall 二.修改mall-admin项目的配置文件 修改applic ...

随机推荐

  1. P1140 相似基因 (动态规划)

    题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了4种核苷酸,简记作A,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类基因工作组的任务中,生物学家研究 ...

  2. 球形空间产生器 BZOJ 1013

    球形空间产生器 [问题描述] 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便 ...

  3. angular中关于自定义指令——repeat渲染完成后执行动作

    业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己动手写.有经验的同学都应该知道,在ng-r ...

  4. Codeforces Round #267 (Div. 2) C. George and Job (dp)

    wa哭了,,t哭了,,还是看了题解... 8170436                 2014-10-11 06:41:51     njczy2010     C - George and Jo ...

  5. Security arrangements for extended USB protocol stack of a USB host system

    Security arrangements for a universal serial bus (USB) protocol stack of a USB host system are provi ...

  6. R语言入门-画图(二)--heatmap

    一.函数参数: pheatmap参数: treeheight_row #横有多长 treeheight_col #竖有多长 cluster_cols=FLASE #单一方向聚类,也就是只有一边有树状结 ...

  7. php——配合QQ邮箱发送邮件

    最近做一个域名管理系统的项目,实现在域名还有三十天的时候系统发送邮件到QQ邮箱从而提醒续费: 这里运用到了phpmailer; 1:getAll函数: function getAll($con,$sq ...

  8. BZOJ——1720: [Usaco2006 Jan]Corral the Cows 奶牛围栏

    http://www.lydsy.com/JudgeOnline/problem.php?id=1720 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1 ...

  9. windows安装RabbitMQ注意事项

    1.首先下载好ERLANG.RabbitMQ安装包,先安装erlang,设置好环境变量,然后再去安装MQ; 2.别人有两个报错: 一:RabbitMQ安装目录中不允许有空格; 二:安装rabbitmq ...

  10. 连接mysql报错 : The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone...

    time zone 时区错误 DBEAVER连接MySQL运行报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or repres ...