Spring Boot与Docker部署详解
| 本文介绍了Spring Boot与Docker部署,分享给大家,希望对大家有帮助 开启Docker远程访问 首先需要开启docker远程访问功能,以便可以进行远程操作。 CentOS 6 修改/etc/default/docker文件,重启后生效(service docker restart)。 DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375" CentOS 7 打开/usr/lib/systemd/system/docker.service文件,修改ExecStart这行。 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 重启后生效 systemctl daemon-reload systemctl restart docker.service 测试是否生效 curl http://127.0.0.1:2375/info 新建Maven工程 pom.xml配置如下: 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test.springboot.docker</groupId>
  <artifactId>docker-springboot</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.RELEASE</version>
  </parent>
  <properties>
    <java.version>1.8</java.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <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>
          <dockerHost>http://192.168.1.200:2375</dockerHost>
          <resources>
            <resource>
              <targetPath>/</targetPath>
              <directory>${project.build.directory}</directory>
              <include>${project.build.finalName}.jar</include>
            </resource>
          </resources>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
imageName:指定了镜像的名字 dockerDirectory:指定Dockerfile的位置 dockerHost:指定Docker远程API地址 resources:指那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用jar包需要纳入 创建Java类 
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class Application {
  @RequestMapping("/")
  public String home() {
    return "Hello Docker World";
  }
  public static void main(String[] args) {
    SpringApplication.run(Application.class,args);
  }
}
创建Dockerfile 在src/main/docker目录下创建一个名为Dockerfile的文件,配置如下: FROM java VOLUME /tmp ADD docker-springboot-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:表示容器运行后默认执行的命令 完整目录结构如下所示: 
 运行以下命令创建Docker镜像:package docker:build 
 Docker启动镜像 查看项目是否上传成功 
 启动镜像 docker run -p 8888:8080 springboot/docker-springboot 通过浏览器访问 
 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 您可能感兴趣的文章:
 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 




