Dockerfile

  • 基本命令
  • 一、【实战一下】使用Docker构建jdk1.8镜像
    • 1. 将jdk-8u141-linux-x64.tar.gz包下载到本地,然后用ftp传入Linux。
    • 2. 新建一个jdk文件夹将文件拷贝至jdk目录中
    • 3. pull centos镜像作为基础镜像,在此基础上建立jdk镜像
    • 4. 在jdk目录下编写一个Dockerfile
    • 5. 在Dockerfile添加内容
    • 6. 构建镜像
    • 7. 查看
    • 8. 检验
  • 二、接着进行使用Docker创建Eureka镜像
    • 1. 使用springbootMaven插件打包项目
    • 2. 使用ftp传入Linux中,新建一个eureka目录
    • 3. 在eureka目录,新建Dockerfile
    • 4. 构建eureka镜像
    • 5. 运行镜像
    • 6. 访问查看
  • 三、DockerMaven插件自动化部署微服务
    • 1.修改docker配置,开放远程部署(上传)端口
    • 2. 项目中引入docker-maven-plugin插件
    • 3. 构建
    • 4.查看
    • 5.运行项目
    • 6.原理

Dockerfile:将本地的应用或者项目构建成镜像,然后进行使用和运行,发布微服务!!!


基本命令

#定义基础镜像
Form image_name:tag
#声明镜像的创建者
MAINTAINER  user_name
#设置环境变量(可以写多条)
ENV key value
#是Docker的核心部分(可以写多条)
RUN command
#将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
ADD source dir/file
#将会在复制后自动解压
ADD dest dir/file
#和 ADD 相似,但是如果有解压并不能解压
COPY source dir/file
COPY dir/file   #设置工作目录
WORKDIR path dir
#指定开发的端口
EXPOSE port1 port2
# 为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束,argument会被docker run 后的参数覆盖
CMD argument
#与CMDA相似,argument不会被覆盖
ENTRYPOINT argument
#将本地文件夹或者其他容器的文件夹挂载到容器中
COLUME  

一、【实战一下】使用Docker构建jdk1.8镜像

1. 将jdk-8u141-linux-x64.tar.gz包下载到本地,然后用ftp传入Linux。

链接:jdk-8u141-linux-x64.tar.gz
提取码:csqp

linux安装ftp教程

2. 新建一个jdk文件夹将文件拷贝至jdk目录中

mkdir jdk

3. pull centos镜像作为基础镜像,在此基础上建立jdk镜像

#查看centos镜像
docker search centos
#拉去镜像
docker pull centos
#查看所有镜像
docker images

4. 在jdk目录下编写一个Dockerfile

vi Dockerfile

5. 在Dockerfile添加内容

FROM centos   #基于centos镜像(docker 镜像中pull一个)
MAINTAINER xry # 创建者
RUN mkdir  /usr/local/jdk  #运行目录
WORKDIR  /usr/local/jdk  #工作目录
ADD jdk-8u144-linux-x64.tar.gz /usr/local/jdk #复制并解压ENV JAVA_HOME  /usr/local/jdk/jdk1.8.0_141  #环境变量配置
ENV JRE_HOME  /usr/local/jdk/jdk1.8.0_141/jre
ENV PATH $JAVA_HOME/bin:$path

6. 构建镜像

docker build  -t jdk1.8 .  # jdk1.8为设置的镜像名字  .代表当前目录去找Dockerfile

7. 查看

docker images  #查看是否成功

8. 检验

 #运行jdk1.8镜像docker run -di --name=myjdk jdk1.8#进入myjdk容器docker exec -it myjdk /bin/bash# pwd 查看当前工作目录路径# ls 查看当前目录# cd jdk1.8.0_141 进入jdk查看

结论:与Dockerfile中配置的一样,镜像建立成功。

二、接着进行使用Docker创建Eureka镜像

在创建了eureka项目的前提下

项目环境:
springboot
springcloud
IDEA
Maven

1. 使用springbootMaven插件打包项目

<build><finalName>eureak</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
#打包
mvn clean package

2. 使用ftp传入Linux中,新建一个eureka目录

3. 在eureka目录,新建Dockerfile

From jdk1.8  #以jdk1.8为基础镜构建
ADD eureak.jar /eureak.jar  #复制并解压到当前根目录
ENTRYPOINT ["java","-jar","/eureak.jar"]  #使用java -jar 命令启动

java -jar
执行解压jar包下的META-INF文件夹下的MANIFEST.MF文件中的Main-Class来找到执行类并执行其中的main()。

4. 构建eureka镜像

 #构建docker build  -t eureka .# 查看docker images

5. 运行镜像

# 运行镜像 -p 7000:7000 容器与宿主机之间开放项目中配置的7000端口
docker run -di --name=eureka -p 7000:7000 eureka
#查看容器运行日志
docker logs -f --tail=30 eureka

6. 访问查看

http://url:port/

eureka部署成功,其他微服务子项目同样方式部署,然后运行,Docker部署项目完成!

三、DockerMaven插件自动化部署微服务

Dockerfile手动部署,效率很低,可以熟悉部署流程,插件也是相当于插件方式编写Dockerfile文件。

1.修改docker配置,开放远程部署(上传)端口

#编辑文件
vi /lib/systemd/system/docker.service
#在ExecStart=后添加配置
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

#重新加载service配置文件
systemctl daemon-reload
#重启docker
systemctl restart docker

2. 项目中引入docker-maven-plugin插件

网上找一个大佬的docker-maven-plugin模板

<!--使用docker-maven-plugin插件--><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.2</version><!--将插件绑定在某个phase执行--><executions><execution><id>build-image</id><!--用户只需执行mvn package ,就会自动执行mvn docker:build--><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><!--指定生成的镜像名,这里是我们的作者名+项目名--><imageName>test/${project.artifactId}</imageName><!--指定标签 这里指定的是镜像的版本,我们默认版本是latest--><imageTags><imageTag>latest</imageTag></imageTags><!--指定基础镜像jdk1.8--><baseImage>java:8</baseImage><!--镜像制作人本人信息--><maintainer>yy@email.com</maintainer><!--切换到ROOT目录--><workdir>/ROOT</workdir><!--查看我们的java版本--><cmd>["java", "-version"]</cmd><!--${project.build.finalName}.jar是打包后生成的jar包的名字--><entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint><!--指定远程 docker api地址--><dockerHost>http://localhost:2375</dockerHost><!-- 这里是复制 jar 包到 docker 容器指定目录配置 --><resources><resource><targetPath>/</targetPath><!--jar 包所在的路径  此处配置的 即对应 target 目录--><directory>${project.build.directory}</directory><!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin>

3. 构建

输入maven命令

mvn clean package


建立完成

4.查看

docker images

5.运行项目

docker run -di --name=service xry/service-cl

已经注册到eureka

6.原理

使用插件的方式就是相当于配置dockerfile的命令参数,然后生成dockerfile文件,最后根据jar包和Dockerfile构建镜像。

服务器配置规则和防火墙记得开放端口!

自动构建非常好用的!

docker实战之Dockerfile构建部署项目(三)相关推荐

  1. Jenkins自动构建部署项目

    1. 楔子 在实际开发中,经常需要编译.静态代码检查.自动化测试.打包.部署.启动等一连串重复机械的动作,浪费时间.而且容易出错,而Jenkins就是专门Continuous integration( ...

  2. 实战:Dockerfile构建镜像-2022.2.28

    实战:Dockerfile构建镜像-2022.2.28 目录 文章目录 实战:Dockerfile构建镜像-2022.2.28 目录 实验环境 实验软件 1.Dockerfile概述 2.Docker ...

  3. 讲义六 之 docker 搭建测试环境以及部署项目包 created by 爱软测_bill

    讲义六 之 docker 搭建cms测试环境 created by 爱软测_bill 最简洁的总结命令: STEP-0 部署流程预知 [安装docker-->使用docker 拉取Tomcat容 ...

  4. Docker实战6 之构建自己的docker镜像

    2019独角兽企业重金招聘Python工程师标准>>> 1.构建自己的war 这里做测试,使用jpress 下载war包 https://gitee.com/fuhai/jpress ...

  5. 【Docker】自定义dockerfile构建容器镜像并发布

    0 前言 此篇博客参考此b站视频完成,是一个有趣的小实践. 1 项目原址 准备工作:在github上下载一个zip压缩包 网址:恋爱倒计时静态网页 2 从0开始 2.1 创建项目文件夹并解压源项目等操 ...

  6. 使用云效构建部署项目

    一:在外网协同开发,使用阿里云code作为远程仓库,云效作为持续集成环境配置. 1.1 使用阿里云code作为远程仓库,网上有详细的教程,即使用邮箱将本地仓库与远程仓库关联即可. 使用idea可以直接 ...

  7. Docker学习(12) Dockerfile构建过程

    Dockerfile的构建过程 以上为构建缓存 转载于:https://www.cnblogs.com/xiao-xue-di/p/11485044.html

  8. Docker实现运行tomcat并部署项目war包,并实现挂载目录

    一.docker下载tomcat镜像并运行 1:搜索tomcat镜像 docker search tomcat 2:根据搜索出来的列表下载tomcat #下载命令docker pull tomcat ...

  9. linux maven自动构建,Centos7.3+Jenkins+Git+Maven 自动化构建部署项目

    第一步 禁止 SELINUX 访问控制 修改配置之前先备份(良好习惯) sudo cp /etc/selinux/config /etc/selinux/config.bak 备份后,修改selinu ...

最新文章

  1. C语言开发单片机如何避免全局变量过多混乱
  2. 算法导论-MIT笔记
  3. GetLastError编号含义
  4. 用JAVASCRIPT实现静态对象、静态方法和静态属性
  5. 功能、资源权限管理的设计
  6. repo-关于URL编码
  7. 键盘与鼠标器是微型计算机上最常用的,2016年职称计算机考试WindowsXP考前预测试题5...
  8. 工作说明书(Statement of Work,简称SOW)
  9. 面向对象第四单元总结和期末总结
  10. Android Protect-0.luyten+jadx+simplify简单介绍
  11. AspNetPager常用属性及用法 / URLRewrite伪静态与AspNetPager分页控件的结合
  12. 2017越南赛国家I题 Integer Rotation(暴力+判题技巧)
  13. 分享几个常用的国外英文论文文献数据库,先收藏再说
  14. 2022-2028全球环氧水泥地坪漆行业调研及趋势分析报告
  15. CCF CSP 认证相关
  16. elasticsearch forcemerge
  17. 躲开混脸熟的车型,一文带你去看2019上海车展里的新面孔
  18. 具体分析contrex-A9的汇编代码__switch_to(进程切换)
  19. python函数编写脚本
  20. 开源 区块链_区块链将如何影响开源

热门文章

  1. 解决Google Play商店出现“此设备未经Play保护机制认证”问题
  2. 【学习】adversarial attack、evasion attacks
  3. 健身耳机哪款好,盘点几款可以提高运动效率的耳机
  4. 迅雷财报解析:收入多元化市值被低估
  5. GEE数据集——MOD13Q1.061 大地植被指数 16天 全球250m
  6. 艾永亮:小天才手表如何成为业内巨头,大佬教你如何满足用户需求
  7. 3GPP机密性和完整性算法规范128-EEA3和128-EIA3(三)----机密性算法(EEA3)和完整性算法(EIA3)
  8. css代码 字母自动换行,div 实现长英文字母自动换行CSS
  9. 扬帆赴美,失去风口后京东到家还能起飞吗?
  10. 费波纳奇数c语言,费波纳奇数列