springboot + dockerfile-maven-

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

整合步骤 (maven + springboot)

  1. 在maven的pom.xml文件中增加配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
xml复制代码	<properties>
<docker.image.prefix>xd</docker.image.prefix>
</properties>

<build>
<finalName>docker-demo</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>

配置讲解

​ Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。project.build.finalName∗∗产出物名称,缺省为∗∗{project.build.finalName}** 产出物名称,缺省为**project.build.finalName∗∗产出物名称,缺省为∗∗{project.artifactId}-${project.version}

  1. 打包SpringCloud镜像并上传私有仓库并部署

什么是dockerFile

​ 什么是Dockerfile : 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像

​ 创建 Dockerfile 添加内容 (默认是根目录, 可以修改为src/main/docker/Dockerfile,如果修则需要制定路径)

​ 下面是dockfile的内容:

1
2
3
4
5
dockerfile复制代码FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

参数讲解:

  • FROM : 需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
  • VOLUME 配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
  • ARG:设置编译镜像时加入的参数, ENV 是设置容器的环境变量
  • COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点
  • ENTRYPOINT:容器启动时执行的命令
  • EXPOSE 8080:暴露镜像端口
  1. 构建镜像

1
2
ini复制代码mvn install dockerfile:build
mvn install dockerfile:build -Dmaven.test.skip=true

​ 补充: 如何在阿里云上的linux如何打包上去

  1. 在maven 安装目录的setting文件中加入配置

1
2
3
4
5
xml复制代码<server>
<id>docker-registry</id>
<username>*******</username>
<password>******</password>
</server>
  1. 修改阿里云centeros7 Docker配置开放远程访问

1
bash复制代码vi /usr/lib/systemd/system/docker.service

​ ExecStart这一行后面加上 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

最终效果:

1
ruby复制代码ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
  1. 重启

1
2
3
sql复制代码systemctl daemon-reload

systemctl start docker
  1. 服务器验证是否开始监听

1
2
3
bash复制代码netstat -anp|grep 2375

curl 127.0.0.1:2375/info
  1. windows系统环境变量中新建DOCKER_HOST, 值为 tcp://[修改成你的远程服务器端口号]:2375

  1. 打标签

1
bash复制代码docker tag a1b9fc71720d registry.cn-shenzhen.aliyuncs.com/xd/xd_images:docker-demo-v201808
  1. 推送到镜像仓库

1
bash复制代码docker push registry.cn-shenzhen.aliyuncs.com/xd/xd_images:docker-demo-v201808
  1. 应用服务器拉取镜像

1
bash复制代码docker pull registry.cn-shenzhen.aliyuncs.com/xd/xd_images:docker-demo-v201808
  1. 启动

1
css复制代码docker run -d --name xd_docker_demo1 -p 8099:8080  a1b9fc71720d
  1. 查看启动日志

1
linux复制代码docker logs -f  containerid
  1. 访问

1
arduino复制代码http://[IP]:8099/find/user

docker整合注册中心

  1. 新增maven插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
xml复制代码<properties>
<docker.image.prefix>xd</docker.image.prefix>
</properties>
<build>
<finalName>docker-demo</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
  1. 新建Dockerfile

1
2
3
4
5
css复制代码FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 打包

1
2
ini复制代码mvn install dockerfile:build
mvn install -Dmaven.test.skip=true dockerfile:build
  1. 推送阿里云镜像仓库

阿里云镜像仓库:dev.aliyun.com/search.html

1
2
3
bash复制代码docker tag 062d2ddf272a registry.cn-shenzhen.aliyuncs.com/xd/xd_images:eureka-v20180825
docker push registry.cn-shenzhen.aliyuncs.com/xd/xd_images:eureka-v20180825
docker pull registry.cn-shenzhen.aliyuncs.com/xd/xd_images:eureka-v20180825

5、查看日志

1
复制代码docker logs -f  containerid
  1. 运行

docker run -d --name docker-eureka-server -p 8761:8761 e7f687f101a7

Docker Redis安装

  1. 搜索镜像

1
sql复制代码docker search redis
  1. 拉取

1
bash复制代码docker pull docker.io/redis
  1. 启动

1
arduino复制代码docker run --name "xd_redis" -p 6379:6379 -d 4e8db158f18d

参考:

1
bash复制代码docker run --name "xd_redis" -p 6379:6379 -d 4e8db158f18d --requirepass "123456" -v $PWD/data:/data
  1. 访问redis容器里面,进行操作

1
bash复制代码docker exec -it 295058d2b92e redis-cli

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%