Git拉取项目 Docker部署SpringCloud

从0开始,使用dockerfile将项目打包上传到服务器

以开源项目若依Cloud为例子

项目地址:https://github.com/zhangmrit/ruoyi-cloud

docker安装以及远程访问配置

1.安装依赖包:

1
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.安装Docker-CE

1
$ sudo yum install docker-ce

3.配置docker远程访问

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

4.找到下面这一行:

修改为:

1
2
# 如果有不一样的,直接在 /usr/bin/dockerd 后面加上即可
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

5.重新读取配置文件

1
$ systemctl daemon-reload

6.启动docker服务

1
2
3
4
5
6
7
8
# 重启docker
$ systemctl restart docker

# 开机启动
$ sudo systemctl enable docker

# 启动docker
$ sudo systemctl start docker

测试访问 http://ip-address:2375/version 如果有数据则配置成功

docker-compse安装

依次执行:

1
2
3
4
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version

clone项目

clone项目到本地或使用IDEA直接拉取:

1
$ git clone https://github.com/zhangmrit/ruoyi-cloud.git

请阅读README,其中说明了启动顺序:

  • eureka
  • config
  • gateway
  • system
  • auth

就以前3个为例子,后面的依瓢画葫芦即可

修改yml

其他模块请修改Eureka的地址:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server:
port: 7001

eureka:
instance:
hostname: chongma-eureka #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
#单机
#设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

pom文件增加plugin

在需要启动的模块里添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.14</version>
<configuration>
<!-- 镜像名称 -->
<imageName>${project.artifactId}</imageName>
<!-- Dockerfile文件所在目录 -->
<dockerDirectory>src/main/docker</dockerDirectory>
<!-- docker所在宿主机ip 2375为docker开启的远程访问端口 -->
<dockerHost>http://ip-address:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

dockerfile

如下图,新建文件夹docker并创建Dockerfile文件

文件内容:

1
2
3
4
5
6
7
8
9
# 基于哪个镜像
FROM java:8
# 将本地文件夹挂载到当前容器
VOLUME /tmp
# 拷贝文件到容器,chongma-eureka-1.0.1-SNAPSHOT.jar这里是maven打包后的名字
ADD chongma-eureka-1.0.1-SNAPSHOT.jar chongma-eureka.jar
RUN bash -c 'touch /chongma-eureka.jar'
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/chongma-eureka.jar"]

其他的文件照着修改打包名即可

maven打包

首先在IDEA右侧栏点开Maven,选中ruoyi-cloud(root),执行install

然后新建maven命令:

1
clean package docker:build -DskipTests

依次创建好3个模块的maven,最后执行

远程连接服务器,执行

1
$ docker images

编写docker-compose

任意目录执行:

1
$ vim docker-compose.yml

其他模块的照着写即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: '3'
services:
eureka-server: #自定义服务名--注册中心
restart: on-failure
image: chongma-eureka #镜像名称
ports:
- "7001:7001" #映射的端口
environment: #环境变量
SERVER_PORT: "7001" #自定义参数用于给服务的配置文件传递参数

config: #自定义服务名--配置中心
image: chongma-config #镜像名称
ports:
- "8888:8888" #映射的端口
environment: #环境变量配置
REGISTER_URL: "http://ip-address:7001/eureka/"
SERVER_PORT: "8888"

gateway: #自定义服务名
image: chongma-gateway #镜像名称
ports:
- "9527:9527" #映射的端口
environment: #环境变量配置
REGISTER_URL: "http://ip-address:7001/eureka/"
SERVER_PORT: "9527"

保存,执行命令:

1
$ docker-compose -f docker-compose.yml up -d

访问Eureka服务器,成功


其他命令:

停止docker-compose(停止项目):

1
$ docker-compose -f docker-compose.yml down

查看运行的容器日志:

1
$ docker logs -f -t --tail 行数 容器名

建议将镜像上传至阿里云,更安全

遗留问题(待解决)

config配置中心用的是search-locations,虽然config注册到了Eureka

但是里面的数据库、redis连接都没有读取到

------本文结束感谢阅读------
0%