Docker部署单个的springboot应用 (eureka-server)

一 在pom文件中添加docker编译的插件

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- tag::plugin[] -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.3</version>
                <configuration>
                    <imageName>tms/${project.artifactId}</imageName> //其中tms是镜像名的前缀 为了区别而已 例如我的这个application的名为eureka-server 则他的镜像名为tms/eureka-server 
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- end::plugin[] -->
        </plugins>
    </build>

二 编写Dockfile 

 

 我的文件目录是这样的,其中Dockefile是没有文件后缀的  文件内容如下:

FROM java:8 
VOLUME /tmp
ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8060

   FROM 后是指定java的版本

  VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录

  项目的 jar 文件作为 “app.jar” 添加到容器的

  ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source

 其中有关于jar包的路径 这个路径是从target的根目录去找 

扫描二维码关注公众号,回复: 2602611 查看本文章

 三  将eureka-server打包

  

[root@Master eureka-server]# mvn clean package docker:build -Dmaven.test.skip=true
[root@Master eureka-server]# mvn clean package docker:build -Dmaven.test.skip=true
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< com.hmzj:eureka-server >-----------------------
[INFO] Building eureka-server 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.0.0:clean (default-clean) @ eureka-server ---
[INFO] 
[INFO] --- maven-resources-plugin:3.0.1:resources (default-resources) @ eureka-server ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ eureka-server ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /home/web/workspace/tms-callcenter/eureka-server/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:3.0.1:testResources (default-testResources) @ eureka-server ---
[INFO] Not copying test resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ eureka-server ---
[INFO] Not compiling test sources
[INFO] 
[INFO] --- maven-surefire-plugin:2.21.0:test (default-test) @ eureka-server ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ eureka-server ---
[INFO] Building jar: /home/web/workspace/tms-callcenter/eureka-server/target/eureka-server-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.0.3.RELEASE:repackage (default) @ eureka-server ---
[INFO] 
[INFO] --- docker-maven-plugin:0.4.3:build (default-cli) @ eureka-server ---
[INFO] Copying /home/web/workspace/tms-callcenter/eureka-server/target/eureka-server-0.0.1-SNAPSHOT.jar -> /home/web/workspace/tms-callcenter/eureka-server/target/docker/eureka-server-0.0.1-SNAPSHOT.jar
[INFO] Copying src/main/docker/Dockerfile -> /home/web/workspace/tms-callcenter/eureka-server/target/docker/Dockerfile
[INFO] Building image tms/eureka-server
Step 1/5 : FROM java:8
 ---> d23bdf5b1b1b
Step 2/5 : VOLUME /tmp
 ---> Using cache
 ---> 5308d9a48e23
Step 3/5 : ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar
 ---> e26005362082
Removing intermediate container ae0edcf3f17c
Step 4/5 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
 ---> Running in f7ed354189de
 ---> 4c365be95f2f
Removing intermediate container f7ed354189de
Step 5/5 : EXPOSE 8060
 ---> Running in 279cee1f4c28
 ---> e26719477043
Removing intermediate container 279cee1f4c28
Successfully built e26719477043
[INFO] Built tms/eureka-server
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 25.808 s
[INFO] Finished at: 2018-08-07T18:08:55+08:00
[INFO] ------------------------------------------------------------------------

 

四 用docker部署

  1.查看docker images

  

[root@Master eureka-server]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
tms/eureka-server       latest              e26719477043        2 minutes ago       699 MB
<none>                  <none>              e48f8ad62799        3 hours ago         699 MB
<none>                  <none>              59d323a94109        7 hours ago         707 MB
docker.io/hello-world   latest              2cb0d9787c4d        3 weeks ago         1.85 kB
docker.io/java          8                   d23bdf5b1b1b        18 months ago       643 MB
docker.io/ubuntu        15.10               9b9cb95443b5        2 years ago         137 MB
[root@Master eureka-server]# 

  2.运行镜像

[root@Master eureka-server]# docker run -p 8061:8061 -d  tms/eureka-server --spring.profiles.active=peer2
1d4cd0fb70a9da0260a13658b957993ddac78e430b82a670275b1d5de4468a3f

-d 后台运行 -p port1:port2 port1表示对外端口号  port2没啥用   

五 检验是否正确

 

猜你喜欢

转载自www.cnblogs.com/pangyangqi/p/9438634.html