1.ECS准备docker相关环境

1.1ECS安装docker

一行一行执行 都是从官网找的命令

sudo -i
apt update
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

– 安装最新版

apt update
apt install docker-ce docker-ce-cli containerd.io
systemctl status docker

springboot 将消息发送到另一台服务器_服务器


锁住当前版本

apt-mark hold docker-ce

修改2375端口 防止被攻击

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

加上

-H tcp://0.0.0.0:4566

springboot 将消息发送到另一台服务器_服务器_02


保存

systemctl daemon-reload
systemctl restart docker
systemctl status docker

springboot 将消息发送到另一台服务器_maven_03


测试

curl http://localhost:4566/version

springboot 将消息发送到另一台服务器_docker_04


springboot 将消息发送到另一台服务器_docker_05


修改docker镜像源

vi /etc/docker/daemon.json

复制上

{
  "registry-mirrors": ["http://hub-mirror.c.163.com","https://registry.docker-cn.com"]
}

配置完毕重启下docker服务

systemctl daemon-reload 
systemctl restart docker

1.2安装docker-compose

docker-compose有V1和V2版本,我用的是V2
有两种
第一种是链接下载

curl -L "https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

授权

chmod +x /usr/local/bin/docker-compose

第二种从github下载文件 手动传到服务器
链接:https://pan.baidu.com/s/1yhw1-VVvhIn6kyx4j-lzVQ 提取码:hb3n
手动传到目录
/usr/local/bin

mv  docker-compose-linux-x86_64 docker-compose

springboot 将消息发送到另一台服务器_服务器_06

chmod +x /usr/local/bin/docker-compose
docker compose version

springboot 将消息发送到另一台服务器_spring boot_07

1.3 安装harbor

我也给你们下载好了

链接:https://pan.baidu.com/s/1HALIQ6Nn61FNVQ44pdpVAg 提取码:yxqa

也可以自己去github下载

手动传到服务器

springboot 将消息发送到另一台服务器_spring boot_08


解压

tar -xvf harbor-offline-installer-v2.8.2.tgz

修改文件名为 harbor.yml

mv harbor.yml.tmpl harbor.yml

springboot 将消息发送到另一台服务器_docker_09

vi harbor.yml

修改

hostname: 你的云服务器公网IP地址

port: 端口 默认80

把https注释掉

harbor_admin_password: harbor登录密码

springboot 将消息发送到另一台服务器_spring boot_10


运行

bash install.sh

访问页面

http://139.9.xx.xx:85/springboot 将消息发送到另一台服务器_jar_11
创建用户和创建项目 给项目分配用户
springboot 将消息发送到另一台服务器_docker_12

springboot 将消息发送到另一台服务器_服务器_13


springboot 将消息发送到另一台服务器_jar_14

2.准备springboot项目 构建镜像发布

2.1 idea连接docker

File---->settings—>搜索docker 没有就去plugin下载

配置tcp地址:tcp://139.9.xx.xx:4566

springboot 将消息发送到另一台服务器_spring boot_15

2.2配置系统环境变量

变量名:DOCKER_HOST
变量值:tcp://139.9.xx.xx:4566

springboot 将消息发送到另一台服务器_spring boot_16


注意: 重启电脑

2.3 配置maven的settings.xml文件

<server>
       <id>139.xxx:85</id>
       <username>damowang</username>
       <password>xxxxxxx</password>
       <configuration>
        <email>m1836xxxx102@163.com</email>
       </configuration>
    </server>

springboot 将消息发送到另一台服务器_服务器_17

2.4修改pom.xml文件

注意 这个

<build>
        <finalName>alice</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.10</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                	<!-- 不写这个 生成出来的镜像没有镜像ID-->
                    <dockerfile>E:\insuper\alice\Dockerfile</dockerfile>
                    <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                    <!-- 生成镜像的repository 看下图-->
                    <repository>${project.artifactId}</repository>
                    <tag>${project.version}</tag>
                    <!--Dockerfile中引用到的参数-->
                    <buildArgs>
                        <JAR_FILE>target/alice.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

pom.xml配置的repository

springboot 将消息发送到另一台服务器_jar_18

2.5编写Dockerfile文件

FROM openjdk:8-alpine
WORKDIR /usr/local
EXPOSE 13500
ADD  ./target/alice.jar .
ENTRYPOINT   ["java","-jar","alice.jar"]

这个文件你乱写的话 容易报这个错DockerException: ADD failed: xxxxxxxxx,no such file or directory

这个文件要放在和pom.xml文件平级

springboot 将消息发送到另一台服务器_docker_19

2.6 idea执行mvn clean package

![()

springboot 将消息发送到另一台服务器_jar_20


我们看一下云服务器有没有镜像了

docker images

springboot 将消息发送到另一台服务器_jar_21

可以看到之前是没有的镜像的 , mvn clean package执行完之后构建成功

2.7 idea配置harbor仓库地址把镜像推送到harbor

File------>settings.xml-----搜docker

注意:

Address: 139.xx.xx.xx:85/jinan-lab 你harbor仓库登录地址:端口号/项目名

springboot 将消息发送到另一台服务器_jar_22


下面

Username: 该仓库下成员用户名

Password: 密码

Email: 邮箱

这仨要写就都写上 就是harbor创建的用户

springboot 将消息发送到另一台服务器_maven_23


server选docker

springboot 将消息发送到另一台服务器_spring boot_24

从idea连接的docker里面可以看到打的镜像

springboot 将消息发送到另一台服务器_maven_25

springboot 将消息发送到另一台服务器_spring boot_26


springboot 将消息发送到另一台服务器_docker_27


上传成功

![在这里插入图片描述](

springboot 将消息发送到另一台服务器_jar_28

看一下harbor仓库

springboot 将消息发送到另一台服务器_docker_29