springboot结合Docker部署

  • 创建Dockerfile

FROM java
VOLUME /tmp
ADD springboot-docker-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

FROM java:指Docker Hub上官方提供的java镜像,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用。

VOLUME /tmp:创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录。

ADD docker-springboot-0.0.1-SNAPSHOT.jar app.jar:将应用jar包复制到/app.jar

ENTRYPOINT:表示容器运行后默认执行的命令

  • pom.xml文件引入docker插件

<build>
		<plugins>
			<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.14</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
			</plugin>
		</plugins>
</build>

imageName:指定了镜像的名字

dockerDirectory:指定Dockerfile的位置

dockerHost:指定Docker远程API地址

resources:指那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用jar包需要纳入

  • 用maven 进行打包并将镜像发布到docker中

mvn package docker:build
  • 查看docker镜像

$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
springboot/springboot-docker   latest              3d62f6903a78        20 minutes ago      676MB
redis                          latest              55cb7014c24f        3 months ago        83.4MB
nginx                          latest              cd5239a0906a        3 months ago        109MB
rabbitmq                       3.7.3-management    2f415b0e9a6e        7 months ago        151MB
java                           latest              d23bdf5b1b1b        20 months ago       643MB

其中 springboot/springboot-docker 是刚才构建的镜像。现在可以为该镜像启动一个容器了。

  • 启动容器

docker run -p 8080:8080 springboot/springboot-docker

浏览器打开localhost:8080即可看见页面

配置docker加速器 

Linux

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。更多详情请访问文档。

macOS

Docker For Mac

右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:

http://f1361db2.m.daocloud.io

点击 Apply & Restart 按钮使设置生效。

Windows

Docker For Windows

在桌面右下角状态栏中右键 docker 图标,修改在 Docker Daemon 标签页中的 json ,把下面的地址:

http://f1361db2.m.daocloud.io

加到" registry-mirrors"的数组里。点击 Apply 。

原文地址:https://www.cnblogs.com/xz77/p/13501232.html