1. Docker开启远程访问,注意端口不要用默认的,防止被攻击

[root@localhost ~]# vi /usr/lib/systemd/system/docker.service

修改

# 修改该行-注意端口不要用默认的 2375
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2370

Intellij IDEA 集成 Docker 发布_docker

 

 开放端口:

#防火墙开放端口
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=2370/tcp
[root@localhost ~]# firewall-cmd --reload

 

#重新加载配置文件
[root@localhost ~]# systemctl daemon-reload
#重启服务
[root@localhost ~]# systemctl restart docker.service
#查看端口是否开启
[root@localhost ~]# netstat -nlpt
#直接curl看是否生效
[root@localhost ~]# curl http://127.0.0.1:2370/info

IntelliJ IDEA安装Docker插件

Intellij IDEA 集成 Docker 发布_jar_02

 

 

 

Intellij IDEA 集成 Docker 发布_SpringBoot_03

  

 Spring Boot服务docker部署

<properties>
<docker.image.prefix>vipsoft</docker.image.prefix>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory></dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
</build>

创建 Dockerfile

Intellij IDEA 集成 Docker 发布_Docker_04

 

# Docker image for SpringBoot file run
# VERSION 0.0.1
# Author: Jimmy
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER Jimmy <Jimmy.Chen@thothcloud.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD target/vipsoft-demo-1.0.0.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
#修改Docker时区-否则里面的时间会慢8小时
ENV TZ=Asia/Shanghai
#通过文件链接的方式修改 时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ENV SPRING_PROFILES_ACTIVE=""

#这种写法不支持 Skywalking
#ENTRYPOINT ["java","-Dspring.profiles.active=$SPRING_PROFILES_ACTIVE","-jar","app.jar"]

ENTRYPOINT [ "sh", "-c", "java -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -jar /app.jar" ]

#放 linux 上编译
#docker build -t vipsoft-demo:1.0.0 .

#docker run --name vipsoft-demo-9091 --restart always \
# -d -p 9091:9099 \
# -e SPRING_PROFILES_ACTIVE=dev \
# -v /opt/logs/vipsoft-demo/:/logs/ \
# vipsoft-demo:1.0.0

SPRING_PROFILES_ACTIVE=dev 不能写成 SPRING_PROFILES_ACTIVE="dev"
加了双引号,命令行可以运行,但IDEA集成时不能运行

 

创建docker镜像

Intellij IDEA 集成 Docker 发布_Docker_05

 

 

 

Intellij IDEA 集成 Docker 发布_docker_06

 

Intellij IDEA 集成 Docker 发布_docker_07

 

 Environment variables 参数的值不能带“”双引号

 命令解释:

Image tag:指定镜像名称和tag,镜像名称为docker-demo,tag为1.1
Bind ports:绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]
Bind mounts:将宿主机目录挂到到容器内部目录中。格式为[宿主机目录]:[容器内部目录]。这个Spring Boot项目会将日志打印在容器/home/developer/app/logs/目录下,将宿主机目录挂载到容器内部目录后,那么日志就会持久化容器外部的宿主机目录中。

 

 

Intellij IDEA 集成 Docker 发布_SpringBoot_08

 

Intellij IDEA 集成 Docker 发布_docker_09

 

Intellij IDEA 集成 Docker 发布_docker_10

 

Connect 后,可以查看容器的运行情况

 

Intellij IDEA 集成 Docker 发布_SpringBoot_11

 

ENTRYPOINT [ "sh", "-c", "java -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -jar /app.jar" ]