springBoot制作docker镜像

  • 2019 年 12 月 31 日
  • 笔记

文章目录

1. SpringBoot制作docker镜像

1.1. 开启2375端口

1.2. 修改docker配置文件

1.3. 配置环境变量

1.4. Dockerfile

1.5. 配置maven插件

1.6. 运行

1.7. 源码

1.8. 参考文章

SpringBoot制作docker镜像

开启2375端口

修改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
  • 添加完之后的完整内容如下:
Type=notify  NotifyAccess=main  EnvironmentFile=-/run/containers/registries.conf  EnvironmentFile=-/etc/sysconfig/docker  EnvironmentFile=-/etc/sysconfig/docker-storage  EnvironmentFile=-/etc/sysconfig/docker-network  Environment=GOTRACEBACK=crash  Environment=DOCKER_HTTP_HOST_COMPAT=1  Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin  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             --init-path=/usr/libexec/docker/docker-init-current             --seccomp-profile=/etc/docker/seccomp.json             $OPTIONS             $DOCKER_STORAGE_OPTIONS             $DOCKER_NETWORK_OPTIONS             $ADD_REGISTRY             $BLOCK_REGISTRY             $INSECURE_REGISTRY             $REGISTRIES
  • 重启docker

配置环境变量

  • 添加环境变量DOCKER_HOST的值为tcp://ip:2375

Dockerfile

  • 将编写的Dockerfile文件放在/src/main/docker下,内容如下:
FROM java:8    MAINTAINER https://chenjiabing666.github.io    # 指定虚拟卷,/tmp是tomcat运行时需要的,/usr/local/images是上传文件需要的,/usr/local/weblogs/demo是记录日志需要的  VOLUME ["/tmp","/usr/local/images","/usr/local/weblogs/demo"]    # 添加jar  ADD demo-server.jar demo.jar    # 暴露8080端口  EXPOSE 8080    # 运行jar  CMD ["java","-jar","demo.jar"]

配置maven插件

<build>  		<finalName>demo-server</finalName>  		<plugins>  			<!-- springBoot的maven打包插件 -->  			<plugin>  				<groupId>org.springframework.boot</groupId>  				<artifactId>spring-boot-maven-plugin</artifactId>  			</plugin>    			<plugin>  				<groupId>com.spotify</groupId>  				<artifactId>docker-maven-plugin</artifactId>  				<version>0.4.13</version>    				<!-- 将docker:build这个动作绑定在package这个动作上,只要maven install 即可上传到远程服务器 -->  				<executions>  					<execution>  						<id>build-image</id>  						<phase>package</phase>  						<goals>  							<goal>build</goal>  						</goals>  					</execution>  				</executions>    				<configuration>    					<!-- 指定镜像的名称+版本,必须是满足[a-z,0-9]这个正则才行 -->  					<imageName>${project.artifactId}:${project.version}</imageName>    					<!-- 覆盖相同标签镜像 -->  					<forceTags>true</forceTags>    					<!-- 指定Dockerfile的文件位置 -->  					<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>    					<!-- 指定Dockerfile的文件位置 -->  					<dockerHost>http://39.105.123.197:2375</dockerHost>    					<!-- 指定jar包所在的位置 -->  					<resources>  						<resource>  							<targetPath>/</targetPath>  							<directory>${project.build.directory}</directory>  							<include>${project.build.finalName}.jar</include>  						</resource>  					</resources>  				</configuration>  			</plugin>  		</plugins>  	</build>

运行

  • 我们制作镜像运行的时候需要挂载自己的虚拟卷,否则诸如创建文件夹和上传文件之类的都是在容器内创建的,不会在本机创建,因此我们需要将其挂载在自己的宿主机上,运行命令如下:
    • 使用-v挂载即可
docker run --name demo -p 8080:8080 -v /usr/local:/usr/local -v /tmp:/tmp -d 8877edd71d5a

源码

参考文章