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的根目錄去找 

 三  將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沒啥用   

五 檢驗是否正確

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM