spring could Windows打包構建docker鏡像到linux


工程模擬參考:http://blog.csdn.net/forezp/article/details/70198649

一、工程結構

 

二、Pom配置

<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>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <skipDockerBuild>false</skipDockerBuild>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- end::plugin[] -->
        </plugins>
    </build>

yml配置信息

server:
  port: 8661
#  context-path: /hello

eureka:
  instance:
    prefer-ip-address: true
  client:
    registerWithEureka: false
    fetchRegistry: false

三、dockerfile信息

創建dockerfile文件,位置:src/main/docker

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD eureka-server-docker-0.0.1-SNAPSHOT.jar app.jar
#RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8761

四、修改遠程Linux服務器docker配置,作者版本為Centos7

1、編輯docker.service文件,開啟遠程調用

vi /usr/lib/systemd/system/docker.service

在ExecStart這一行后面追加-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

ExecStart=/usr/bin/dockerd-current \
          -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY

2、重啟docker服務

service docker restart

3、查看端口是否啟動

netstat -anp|grep 2375

4、防火牆開放2375端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent

firewall-cmd --reload

五、Windows增加DOCKER_HOST環境變量

六、Maven打包構建

  cd 到工程模塊下執行下面的打包命令

     mvn clean package docker:build -DskipTests

七、啟動容器

docker run --name eureka-server -p 8661:8661 -d mydocker/eureka-server-docker

拷貝jar包到宿主機

#docker run --name eureka-server -p 8661:8661 -v $PWD/eureka-server-docker.jar:/app.jar -d mydocker/eureka-server-docker

#docker run --name eureka-client --link eureka-server:eureka-server -p 8662:8662 -v $PWD/eureka-client-docker.jar:/app.jar -d mydocker/eureka-server-docker

八、訪問測試

 

 

 

 

完成上面的步驟,eureka-server注冊中心已經能夠成功部署啟動,我們接下來同樣部署啟動eureka-client,發現client總是無法注冊到server中。csdn網友lirui940403的解決方案

我弄了一整天也是一直注冊不進去,后來又搜了搜docker進程間通信,發現一個方法,
eureka-server部署的時候給一個名字: docker run --name eureka-server -p 8761:8761
server-hi中部署使用link參數 docker run --link eureka-server(server部署時賦予的名字):eureka-server(配置中寫的地址) ......
注冊不進去的可以試試。

 


免責聲明!

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



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