下载并导入第18章代码
https://github.com/benwang6/spring-cloud-repo
只导入前5个项目
修改2,3,4,5项目的yml配置,添加相面配置,使用ip注册
eureka:
instance:
prefer-ip-address: true
按项目顺序执行:
-
右键 – run as – maven build…
-
Goals: install
-
勾选 Skip Tests.
创建四个空文件夹,将2,3,4,5四个项目的jar文件复制到四个文件夹中:
构建镜像
将 centos:7 镜像导入服务器
复制centos7-docker-image.gz到服务器并导入
jdk镜像
新建文件夹 jdk, 复制jdk-8u212-linux-x64.tar.gz到jdk目录
在 jdk目录创建 Dockerfile 文件
cat <<EOF > Dockerfile
FROM centos:7
ADD jdk-8u212-linux-x64.tar.gz /opt/
ENV JAVA_HOME=/opt/jdk1.8.0_212 \
PATH=$PATH:/opt/jdk1.8.0_212/bin:/usr/tomcat/bin
ENTRYPOINT bash
EOF
构建镜像
docker build -t centos7-jdk8:v1 .
eureka镜像
进入eureka目录,创建构建文件
cat <<EOF > Dockerfile
FROM centos7-jdk8:v1
COPY sp05-eureka-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp05-eureka-0.0.1-SNAPSHOT.jar"]
CMD ["--spring.profiles.active=eureka1", "--server.port=2001"]
EOF
构建镜像
docker build -t sp-eureka:v1 .
item-service 镜像
进入item目录,创建构建文件
cat <<EOF > Dockerfile
FROM centos7-jdk8:v1
COPY sp02-itemservice-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp02-itemservice-0.0.1-SNAPSHOT.jar"]
EOF
构建镜像
docker build -t sp-item:v1 .
user-service 镜像
进入user目录,创建构建文件
cat <<EOF > Dockerfile
FROM centos7-jdk8:v1
COPY sp03-userservice-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp03-userservice-0.0.1-SNAPSHOT.jar"]
EOF
构建镜像
docker build -t sp-user:v1 .
order-service 镜像
进入docker目录,创建构建文件
cat <<EOF > Dockerfile
FROM centos7-jdk8:v1
COPY sp04-orderservice-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp04-orderservice-0.0.1-SNAPSHOT.jar"]
EOF
构建镜像
docker build -t sp-order:v1 .
导出镜像,再导入其他服务器
docker save \
centos7-jdk8:v1 \
sp-eureka:v1 \
sp-item:v1 \
sp-user:v1 \
sp-order:v1 \
| gzip > img.gz
docker load -i img.gz
部署
eureka
用rs部署容器, 先创建rs部署描述文件
cat <<EOF > eureka1-rs.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: eureka1
spec:
replicas: 1
selector:
matchLabels:
app: eureka1
template:
metadata:
labels:
app: eureka1
spec:
containers:
- name: eureka1
image: sp-eureka:v1
ports:
- containerPort: 2001
protocol: TCP
EOF
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
cat <<EOF > eureka2-rs.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: eureka2
spec:
replicas: 1
selector:
matchLabels:
app: eureka2
template:
metadata:
labels:
app: eureka2
spec:
containers:
- name: eureka2
image: sp-eureka:v1
args: ["--spring.profiles.active=eureka2", "--server.port=2002"]
ports:
- containerPort: 2002
protocol: TCP
EOF
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
部署rs, rs会自动创建容器,启动eureka服务器
k create -f eureka1-rs.yml
k create -f eureka2-rs.yml
部署 service, 对外暴露eureka访问
这里我们只暴露一个eureka服务器进行测试
cat <<EOF > eureka1-svc.yml
apiVersion: v1
kind: Service
metadata:
name: eureka1
spec:
type: NodePort
ports:
- port: 2001
targetPort: 2001
nodePort: 30123
selector:
app: eureka1
EOF
执行部署
k create -f eureka1-svc.yml
部署后访问测试:
http://192.168.64.191:30123/
item-service
cat <<EOF > item-rs.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: item
spec:
replicas: 1
selector:
matchLabels:
app: item
template:
metadata:
labels:
app: item
spec:
containers:
- name: item
image: sp-item:v1
EOF
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
user-service
cat <<EOF > user-rs.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: user
spec:
replicas: 1
selector:
matchLabels:
app: user
template:
metadata:
labels:
app: user
spec:
containers:
- name: user
image: sp-user:v1
EOF
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
order-service
cat <<EOF > order-rs.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: order
spec:
replicas: 1
selector:
matchLabels:
app: order
template:
metadata:
labels:
app: order
spec:
containers:
- name: order
image: sp-order:v1
EOF
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
对外暴露order服务,进行测试
cat <<EOF > order-svc.yml
apiVersion: v1
kind: Service
metadata:
name: order
spec:
type: NodePort
ports:
- port: 8201
targetPort: 8201
nodePort: 30201
selector:
app: order
EOF