dockerDockerfilejar包docker-compose

docker的好处自不必多说,启动迅速,占用资源少,方便管理。把jar包build构建成docker镜像,再结合docker-compose管理docker容器的启动,简直是开发Spring cloud项目的最佳助手!

一、安装docker和compose

参考:安装docker 使用CentOS7
参考:安装compose

1.安装稳定版docker compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.文件授权
sudo chmod +x /usr/local/bin/docker-compose
3.查看是否安装成功

$ docker-compose --version
docker-compose version 1.25.0, build 1110ad01

二、准备jar包

自行准备一个可运行的jar包即可,测试使用的是一个eureka注册中心的项目jar包。步骤:
1.创建springboot项目
2.添加eureka依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

3.添加application配置

spring:
application:
name: eureka-server server:
port: 8761 eureka:
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

三、编写配置文件

目录结构
  • 测试jar包
  • Dockerfile: 构建docker镜像配置
  • docker-compose.yml: compose配置,创建docker容器

1. Dockerfile

FROM java:8
MAINTAINER lin
ADD eurake-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8761
ENTRYPOINT ["java","-jar","app.jar"]
  • FROM: 基础镜像,通过jdk8镜像开始
  • MAINTAINER: 维护者
  • ADD: 复制jar包到镜像内,名字为app.jar
  • EXPOSE: 声明端口
  • ENTRYPOINT: docker启动时,运行的命令.这里就是容器运行就启动jar服务

进入Dockerfile的同级目录,指定镜像构建:
docker build -t lin/eureka .
最后的点不要漏掉,lin/eureka是给镜像起的名字

查看镜像: docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lin/eureka latest f45c58780812 4 hours ago 691MB
redis latest dcf9ec9265e0 3 weeks ago 98.2MB
java 8 d23bdf5b1b1b 2 years ago 643MB

2. docker-compose.yml

version: '3'
services:
eureka:
image: lin/eureka
container_name: lin-eureka
restart: always
ports:
- 8761:8761
  • services: 指定容器服务,下面可配多个服务
  • eureka: 服务名字,自己指定.这里就代表我的eureka服务
  • image: 指定启动的镜像,就是上边通过Dockerfile构建的镜像
  • container_name: 给容器起一个名字
  • restart: 可重启,使用always就好
  • ports: 声明映射端口

检查配置是否正确
docker-compose config
启动容器服务
docker-compose up
停止并删除容器服务
docker-compose down
强制启动重新建立容器
docker-compose up -d --force-recreate

3. 查看服务

查看进程: docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
f21fdb5bb57c lin/eureka "java -jar app.jar" 4 hours ago Up 4 hours 0.0.0.0:8761->8761/tcp lin-eureka

查看日志: docker logs lin-eureka

2019-12-16 17:18:17.104  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.2.RELEASE) 2019-12-16 17:18:17.482 INFO 1 --- [ main] com.lyf.eurake.EurakeApplication : No active profile set, falling back to default profiles: default
2019-12-16 17:18:19.690 WARN 1 --- [ main] o.s.boot.actuate.endpoint.EndpointId : Endpoint ID 'service-registry' contains invalid characters, please migrate to a valid format.
2019-12-16 17:18:20.315 INFO 1 --- [ main] o.s.cloud.context.scope.GenericScope : BeanFactory id=6ff43722-b2c2-392e-b72c-6151fa54c3dd
2019-12-16 17:18:21.170 INFO 1 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-12-16 17:18:22.379 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8761 (http)

四、补充docker-compose配置

docker-compose配置,除了使用image指定镜像之外,还可以使用build构建镜像和启动容器放在一起执行.

version: '3'
services:
eureka2:
build: ./eureka
image: lin-eureka:2
container_name: lin-eureka-2
restart: always
ports:
- 8762:8761
  • build: 指定构建目录,可以使用相对路径
  • image: 跟在build后面,指定构建镜像的名字

构建镜像并启动: docker-compose up -d

Creating network "work_default" with the default driver
Building eureka2
Step 1/5 : FROM java:8
---> d23bdf5b1b1b
Step 2/5 : MAINTAINER lin
---> Using cache
---> 79ef5083226e
Step 3/5 : ADD eurake-0.0.1-SNAPSHOT.jar app.jar
---> 7efd60a9f862
Step 4/5 : EXPOSE 8761
---> Running in 6968db6d10ad
Removing intermediate container 6968db6d10ad
---> a01061f73fe1
Step 5/5 : ENTRYPOINT ["java","-jar","app.jar"]
---> Running in 00c5dc7031e0
Removing intermediate container 00c5dc7031e0
---> 2ed328e41b1c
Successfully built 2ed328e41b1c
Successfully tagged lin-eureka:2

重新构建:
docker-compose build 或者docker-compose up --build

查看镜像: docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lin-eureka 2 2ed328e41b1c 49 seconds ago 691MB

Dockerfile构建jar镜像的更多相关文章

  1. 使用dockerfile构建nginx镜像

    使用dockerfile构建nginx镜像 docker构建镜像的方法:   commit.dockerfile 1.使用commit来构建镜像: commit是基于原有镜像基础上构建的镜像,使用此方 ...

  2. Dockerfile构建私有镜像

    构建第一个镜像 镜像的定制实际上就是定制每一层所添加的配置,文件.我们可以把每一层修改,安装,构建,操作的命令都写入一个脚本,这个脚本就是Dockerfile.Dockerfile是一个文本文件,其内 ...

  3. Dockerfile构建nginx镜像

    Dockerfile构建nginx镜像 [root@bogon ~]# mkdir /opt/docker-file [root@bogon ~]# cd /opt/docker-file/ [roo ...

  4. Docker学习(六)Dockerfile构建自定义镜像

    Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...

  5. dockerfile构建Tomcat镜像

    dockerfile构建Tomcat镜像 一.镜像分层概念 二.制作tomcat镜像 2.1.创建分层目录 [root@node2 ~]# mkdir /app/{web/{nginx,tomcat, ...

  6. 如何使用Dockerfile构建Tomcat镜像并部署war

    我们都知道Docker构建一个镜像有两种方式: 使用`docker commit`命令 使用`Dockerfile`文件和`docker build`命令 那么这两种方式有何区别呢? 相同点:底层实现 ...

  7. Docker 使用Dockerfile构建redis镜像

    Dockerfile实现: FROM centos: MAINTAINER hongdada "hongdaqi159505@gmail.com" WORKDIR /home RU ...

  8. Docker 使用Dockerfile构建tomcat镜像

    Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...

  9. 使用dockerfile构建nginx镜像 转

      docker构建镜像的方法:   commit.dockerfile 1.使用commit来构建镜像: commit是基于原有镜像基础上构建的镜像,使用此方法构建镜像的目的:保存镜像里的一些配置信 ...

随机推荐

  1. win10+py3.6+cuda9.0安装pytorch1.1.0

    参考:清华源失效后如何安装pytorch1.01 GPU版本的安装指令为: conda install pytorch torchvision cudatoolkit=9.0 -c pytorch 这 ...

  2. kubernetes --- weave

    #wget 'https://cloud.weave.works/launch/k8s/weavescope.yaml?k8s-service-type=NodePort&k8s-versio ...

  3. 七年老运维实战中的 Shell 开发经验总结【转】

    无论是系统运维,还是应用运维,均可分为“纯手工”—> “脚本化”—> “自动化”—>“智能化”几个阶段,其中自动化阶段,主要是将一些重复性人工操作和运维经验封装为程序或脚本,一方面避 ...

  4. 避免git clone和push时每次都需要输入用户名和密码

    有三种方式解决git clone时每次都需要输入用户名和密码, 1. SSH免密方式 使用git bash ssh-keygen或puttygen.exe生成公钥. 2. 配置全局开机存储认证信息 下 ...

  5. 【C++】C++的拷贝控制

    目录结构: contents structure [-] 拷贝.赋值与销毁 拷贝构造函数 拷贝初始化 参数和返回值 拷贝赋值运算符 析构函数 三五法则 拷贝控制和资源管理 交换操作 对象移动 右值引用 ...

  6. JS项目快速压缩(windows平台)

    问题 当下JS项目都有node_modules,从而项目文件多,容量大. 如何快速压缩一个JS项目? 方法 首先对JS项目安装生产环境的依赖npm install --production. 这时不要 ...

  7. maven多模块和继承

    https://blog.csdn.net/mafan121/article/details/50477852 1.maven 打包Could not resolve dependencies for ...

  8. 工控随笔_22_关于Profibus网络接线的规则

    最近在做一个项目调试,用的是西门子的PLC,416-2 DP,下面挂了几个DP子网,在进行现场网络测试的时候,有几个走的DP网络的 绝对值编码器,无论怎么弄DP网络不能联通. 一开始我以为DP网线接的 ...

  9. Tplink路由器怎么设置无线桥接(转载)

    原始文章路径:http://www.pc6.com/video/8548.html .以下为转载内容(少量修改) 第1步 进入副路由器后台,选择网络参数,LAN口设置,把IP地址改成目标网络同一段的I ...

  10. 【python基础】easydict的安装与使用

    前言 easydict允许以属性的方式访问dict类型,且可以递归地访问,使用起来比较方便. 安装 pip install easydict 使用 参考 1. easydict; 完