首先這是個Maven項目
-
Docker開啓遠程訪問
系統環境:Centos7
安裝Docker,參考我的另一篇文章:安裝docker
首先修改Docker配置文件
vim /usr/lib/systemd/system/docker.service
在
ExecStart=
後添加/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
docker重新讀取配置文件,重新啓動docker服務
systemctl daemon-reload systemctl restart docker
-
添加Maven插件,使用docker-maven-plugin插件
<build> <plugins> <!--使用docker-maven-plugin插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--將插件綁定在某個phase執行--> <executions> <execution> <id>build-image</id> <!--將插件綁定在package這個phase上。也就是說,用戶只需執行mvn package ,就會自動執行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的鏡像名--> <imageName>${project.artifactId}/${user.name}</imageName> <!--指定標籤--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!-- 指定 Dockerfile 路徑--> <dockerDirectory>${project.basedir}/</dockerDirectory> <!--指定遠程 docker api地址--> <dockerHost>http://192.168.123.56:2375</dockerHost> <!-- 這裏是複製 jar 包到 docker 容器指定目錄配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路徑 此處配置的 即對應 target 目錄--> <directory>${project.build.directory}</directory> <!-- 需要包含的 jar包 ,這裏對應的是 Dockerfile中添加的文件名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
-
添加DockerFile文件,放到項目根目錄下(和pom.xml同級)
#項目所依賴的鏡像 FROM java:8 # 設置時區 ENV TZ=Asia/Shanghai # 時區寫入系統文件 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 將maven構建好的jar添加到鏡像中 ADD target/*.jar app.jar # 暴露的端口號 EXPOSE 32123 # 鏡像所執行的命令 ENTRYPOINT ["java","-jar","/app.jar"]
-
執行Maven命令
mvn clean package -Dmaven.test.skip=true
-
這時在docker上能看到,由Maven構建的鏡像image,由此需要在Docker創建運行的容器。
docker run -t -d -p 32123:32123 --name test_docker imagename