springBoot制作docker镜像
- 2019 年 12 月 31 日
- 筆記
文章目录
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