IDEA用Docker一键部署

54 0 0 0

Docker开启外网访问

修改docker.service文件,添加监听端口 -H tcp://0.0.0.0:2375

vi /usr/lib/systemd/system/docker.service

找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下图所示 image 重启docker

systemctl daemon-reload
systemctl start docker

访问:http://localhost:2375/version 返回版本信息表示成功

开启防火墙

安装配置idea的docker插件

在File --> Settings --> Plugins 在输入框中搜索Docker,选择并安装

在File–> Settings–>Build,Execution,Deployment中找到Docker

新建一个docker实例,然后在Engine API URL中将docker所在ip端口号填上,填完如果下面显示Connection successful证明连接docker成功。如果失败,可能是我们上一步docker开启远程连接未成功。

image

我们设置完成后,回到idea主界面,可以看到页面下面有一个docker窗口(有些版本是services窗口)。点击绿色箭头,连接docker。连接上后显示Containers和Images就是我们现在docker中已经有的容器和镜像。

image

maven打包,生成镜像

修改pom.xml文件,引入docker-maven-plugin插件相关配置. 改配置在plugins标签内


<!--使用docker-maven-plugin插件-->
<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <fork>true</fork>
  </configuration>
</plugin>
<!-- 跳过单元测试 -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>

<!--使用docker-maven-plugin插件-->
<plugin>
  <groupId>com.spotify</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <version>1.0.0</version>
  <!--将插件绑定在某个phase执行-->
  <executions>
    <execution>
      <id>build-image</id>
      <!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
      <phase>package</phase>
      <goals>
        <goal>build</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <!--指定生成的镜像名-->
    <imageName>project/${project.artifactId}</imageName>
    <!--指定标签-->
    <imageTags>
      <imageTag>latest</imageTag>
    </imageTags>
    <!--指定基础镜像jdk1.8-->
    <baseImage>java</baseImage>
    <!--镜像制作人本人信息-->
    <maintainer>v-kun</maintainer>
    <!--切换到ROOT目录-->
    <workdir>/ROOT</workdir>
    <cmd>["java", "-version"]</cmd>
    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]                    </entryPoint>
    <!--指定远程 docker api地址-->
    <dockerHost>http://192.168.4.32:2375</dockerHost>
    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
    <resources>
      <resource>
        <targetPath>/</targetPath>
        <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
        <directory>${project.build.directory}</directory>
        <!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
        <include>${project.build.finalName}.jar</include>
      </resource>
    </resources>
  </configuration>
</plugin>

在项目目录/src/main/resources下新建文件夹docker,在docker文件夹下新建DockerFile,编辑DockerFile

FROM java
MAINTAINER v-kun v-kun.com
WORKDIR /ROOT
ADD /ROOT/risen-hnshzt-txl-0.0.1-SNAPSHOT.jar /ROOT/
ENTRYPOINT ["java", "-jar", "risen-hnshzt-txl-0.0.1-SNAPSHOT.jar"]
CMD ["java", "-version"]

使用maven打包。我们在pom.xml中配置过,如果我们是用maven的package,那么就会自动使用Dockerfile文件进行构建。

image

创建容器,项目部署到docker

我们在docker窗口中,找到我们刚才创建的镜像文件,鼠标右键,选择Create container,我们修改创建容器所需要的配置。

image

在Create Docker Configuration弹窗中修改

  • Container name(容器名称)
  • Bind ports(Ip和端口映射)我在这里添加13047:13047. 使用本地13047端口,去访问容器的13047.
  • Environment variables (环境变量) 设置一下时区防止容器使用UTC时区
  • 在这里的Command line 中添加一个命令 package

image

image

配置完成后保存。以后我们启动项目时都会执行maven的package命令,自动将我们打包并把项目生成docker镜像文件启动。

以后,如果我们修改项目后,都可以使用下图所示去启动。 它会自动打包创建docker镜像并启动项目。

如果在idea的docker里面看项目日志中文乱码 打开Help-Edit Custom VM Options 在最后加一行,重启idea

-Dfile.encoding=UTF-8

image

目录