1. 开启docker远程访问 cd /lib/systemd/system sudo vim docker.service
#替换或修改:127.0.0.1(本地网络访问)换成0.0.0.0表示不限制访问地址
[Service]
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
2. 重载配置 systemctl daemon-reload 3. 重启docker 服务 systemctl restart docker.service
4. 开放端口(,阿里云配置访问规则,本地telnet试试能否连通) ubuntu命令:
centos命令:
1. 配置用户
环境变量
2. IDEA设置 需要先下载IDEA的docker插件,在插件市场直接安装即可
1. pom文件 加入docker打包插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>${project.name}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<dockerfile>Dockerfile</dockerfile>
</configuration>
</plugin>
</plugins>
</build>
2. pom同级目录下写Dockerfile
# 添加 Java 8 镜像来源
FROM java:8
# 添加参数
ARG JAR_FILE
# 添加 Spring Boot 包
ADD target/${JAR_FILE} app.jar
EXPOSE 8080
# 执行启动命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
完成到这一步,然后直接在maven中执行打包,就会自动将Springboot项目打包成镜像上传到远程 但是并不会执行,还需要手动执行一次,因此下面的步骤用于取消这个手动过程,嫌麻烦的可以直接使用docker run命令执行镜像即可
**3. 配置本地免密ssh登录 **
windows本地:
执行生成ssh密钥,一路回车即可
ssh-keygen
生成的密钥文件会在C:\Users\你的账号.ssh下
将该目录下的id_rsa.pub
文件内容追加到
远程服务器的/home/你的用户名/.ssh下的authorized_keys
文件中
如果没有authorized_keys
文件,先用touch创建,然后把id_rsa.pub的内容追加进去。
必须要有authorized_keys文件,直接将id_rsa.pub放进去是没用的
4. 编写sh执行脚本 其内的端口号等docker执行命令按需更改
# 项目名称
projectName="maven-docker"
# 项目版本号
projectVersion="0.0.1-SNAPSHOT"
ssh 你的账号@你的IP "echo "你的sudo密码"|sudo -S docker stop ${projectName};sudo docker rm ${projectName};sudo docker run --net=host --name=${projectName} -d -p 8080:8080 ${projectName}:${projectVersion};echo '执行完毕,回车继续...';read -p ''"
由于我的docker没有加入到可执行sudo命令的用户组,因此这里需要用sudo命令。 sudo -S 的意思是,从前面的echo中获取sudo命令