首先这是个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