前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springBoot制作docker镜像

springBoot制作docker镜像

作者头像
爱撒谎的男孩
发布2019-12-31 16:10:11
2.6K0
发布2019-12-31 16:10:11
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏

文章目录

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配置加上如下内容
代码语言:javascript
复制
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
  • 添加完之后的完整内容如下:
代码语言:javascript
复制
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下,内容如下:
代码语言:javascript
复制
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插件

代码语言:javascript
复制
<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挂载即可
代码语言:javascript
复制
docker run --name demo -p 8080:8080 -v /usr/local:/usr/local -v /tmp:/tmp -d 8877edd71d5a

源码

参考文章

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot制作docker镜像
    • 开启2375端口
      • 修改docker配置文件
        • 配置环境变量
          • Dockerfile
            • 配置maven插件
              • 运行
                • 源码
                  • 参考文章
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档