1.目录结构
2.docker-compose.yaml文件
version: '3'
services:
finance-eureka:
restart: always
build: ./eureka # 创建镜像,会自动执行当前目录下eureka文件夹中的Dockerfile文件
image: "finance-eureka:v1.01" # 镜像名:标签名
hostname: finance_eureka # 注册中心的hostname一定要有,且必须和代码中配置文件里的hostname一致
networks:
- finance-net # 加入的网络
environment:
- TZ=Asia/Shanghai
ports:
- "8010:8010" # 映射的端口号,和代码中配置文件里的端口号一致
hm-car-finance:
restart: always
build: ./hm-car-finance
image: "hm-car-finance:v1.01"
volumes:
- /usr/sign:/usr/sign
- /usr/nosign:/usr/nosign
networks:
- finance-net
environment:
- TZ=Asia/Shanghai
depends_on:
- finance-eureka # 依赖的服务,其启动后才启动当前服务
- gateway
ports:
- "8013:8013"
links:
- finance-eureka # 要连接服务的名字
gateway:
restart: always
build: ./gateway
image: "gateway:v1.01"
networks:
- finance-net
environment:
- TZ=Asia/Shanghai
depends_on:
- finance-eureka
ports:
- "8001:8001"
links:
- finance-eureka
hm-user-center:
restart: always
build: ./hm-user-center
image: "hm-user-center:v1.01"
networks:
- finance-net
environment:
- TZ=Asia/Shanghai
depends_on:
- finance-eureka
- gateway
ports:
- "8012:8012"
links:
- finance-eureka
hm-admin:
restart: always
build: ./hm-admin
image: "hm-admin:v1.01"
networks:
- finance-net
environment:
- TZ=Asia/Shanghai
depends_on:
- finance-eureka
ports:
- "8005:8005"
links:
- finance-eureka
networks:
finance-net:
driver: bridge #以桥接模式创建自定义网络,否则会使用默认的网络
3.eureka文件-注册中心
3.1 Dockerfile文件
FROM java:8
VOLUME /tmp
ADD hm-eureka.jar eureka.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka.jar"]
EXPOSE 8010
3.2 jar包中的配置文件
spring:
application:
name: finance-eureka
server:
port: 8010
eureka:
instance:
hostname: finance-eureka # 这个名字要和docker-compose文件中注册中心服务的hostname对应
preferIpAddress: true
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://finance-eureka:${server.port}/eureka/ # docker-compose注册中心地址
# defaultZone: http://${eureka.ip}:${server.port}/eureka/ # 本地测试注册中心地址
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: ALWAYS
4 要注册到注册中心的服务——以hm-admin为例
4.1 Dockerfile文件
FROM java:8
VOLUME /tmp
ADD hm-admin.jar admin.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/admin.jar","--profile.active=local"]
EXPOSE 8005
4.2 jar包中的配置文件
spring:
application:
name: hm-admin
profiles:
active: ${profile.active}
server:
port: 8005
eureka:
instance:
leaseRenewalIntervalInSeconds: 10
health-check-url-path: /actuator/health
instance-id: ${spring.application.name}:${server.port}
prefer-ip-address: true
client:
registryFetchIntervalSeconds: 5
serviceUrl:
# defaultZone: http://${eureka.ip}:8000/eureka/ # 本地测时注册中心地址
defaultZone: http://finance-eureka:8010/eureka/ # docker-compose部署时注册中心地址
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
---
spring:
profiles: local
security:
user:
name: "user"
password: "password"
eureka:
instance:
metadata-map:
user.name: "user" #These two are needed so that the server
user.password: "password" #can access the protected client endpoints
---
spring:
profiles: dev
---
spring:
profiles: test
---
spring:
profiles: gld
thymeleaf:
cache: true
5 在docker-compose.yaml文件所在路径,打开命令窗口,然后使用docker-compose up命令在启动就ok了。
(注意:箭头所指的端口其实是代码中配置文件的端口,不是docker-compose.yaml文件中的ports中的端口,虽然这里是一致的。)