docker-compose.yml
用于描述docker容器之间的依赖关系
可以一键对多个服务进行启停操作
HelloWorld
编写docker-compose
- docker-compose.yml
# 当前docker-compose版本
version: '3'
# 定义微服务
services:
server1:
container_name: server1
# 镜像名
image: server1:latest
# 镜像启动过程中需要的命令
command:
- "--msg=123456"
# 设置server1所依赖的镜像
links:
- server2:host2
ports:
- 8080:8081
server2:
container_name: server2
image: server2:latest
# 设置server2所依赖的镜像
links:
- server3:host3
server3:
container_name: server3
image: server3:latest
启动
- 执行
docker-compose up -d
ok,一切正常,只要镜像生成了,我们就可以使用docker-compose
一键启动所有的容器
停止
docker-compose down
pig项目示例
# 启动微服务所需的最少依赖
version: '3'
services:
# 数据库
mysql:
container_name: pig-compose-mysql
image: registry.cn-hangzhou.aliyuncs.com/sherry/mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 123456
command: [
'mysqld',
'--innodb-buffer-pool-size=20M',
'--character-set-server=utf8',
'--collation-server=utf8_general_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
volumes:
- /Users/zhangliuning/Volumes/mysql/data:/var/lib/mysql
restart: always
ports:
- 3306:3306
# Redis
redis:
container_name: pig-compose-redis
image: registry.cn-hangzhou.aliyuncs.com/sherry/redis:3.2.9
ports:
- 6379:6379
# RabbitMQ
rabbitmq:
container_name: pig-compose-rabbitmq
image: registry.cn-hangzhou.aliyuncs.com/sherry/rabbitmq:3.7-management
hostname: rabbitmqhost
environment:
RABBITMQ_DEFAULT_USER: pig
RABBITMQ_DEFAULT_PASS: pig
volumes:
- /Users/zhangliuning/Volumes/rabbitmq:/var/rabbitmq/lib
ports:
- 15672:15672
- 5672:5672
pig-eureka:
build:
context: ./
dockerfile: Dockerfile-eureka
container_name: pig-eureka
image: sherry/pig-eureka:latest
restart: always
ports:
- 1025:1025
pig-auth:
build:
context: ./
dockerfile: Dockerfile-auth
container_name: pig-auth
image: sherry/pig-auth:latest
links:
- pig-eureka:eureka
- redis:redishost
- rabbitmq:mqhost
- mysql:mysqlhost
restart: always
ports:
- 3000:3000
pig-upms-service:
build:
context: ./
dockerfile: Dockerfile-upms
container_name: pig-upms-service
image: sherry/pig-upms-service:latest
links:
- redis:redishost
- rabbitmq:mqhost
- pig-eureka:eureka
- mysql:mysqlhost
restart: always
pig-gateway:
build:
context: ./
dockerfile: Dockerfile-gateway
container_name: pig-gateway
image: sherry/pig-gateway:latest
links:
- redis:redishost
- rabbitmq:mqhost
- pig-eureka:eureka
- pig-auth:authhost
restart: always
ports:
- 9999:9999
参数传递
version: '3'
services:
reg-center1:
build:
context: ./
dockerfile: Dockerfile
container_name: reg-center1
environment:
- active=prod
- hostaddr=10.0.0.6
- server1=10.0.0.6
- server2=10.0.0.6
- server1port=10002
- server2port=10003
- serverport=10001
- ydeurekausername=yiding
- ydeurekapassword=yiding
image: sherry/reg-center:latest
restart: always
ports:
- 10001:10001
FROM registry.cn-hangzhou.aliyuncs.com/sherry/java:1.8.0_111
VOLUME /tmp
ADD reg-center.jar app.jar
RUN sh -c 'touch /app.jar'
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java -Xms256m -Xmx256m $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.profiles.active=$active --host-addr=$hostaddr --server1=$server1 --server2=$server2 --server1.port=$server1port --server2.port=$server2port --server.port=$serverport --yd.eureka.username=$ydeurekausername --yd.eureka.password=$ydeurekapassword"]
示例项目
在Gitee上编写了一个项目,实现了以下功能
1、Dockerfile
2、docker-compose.yml
3、docker-compose传递参数给Dockerfile
4、Feign、Eureka跨主机调用
https://gitee.com/dingyi_zhidianfan/yd/tree/V0.0.1
reg-center是注册中心
yiding内是一个生产者和消费者项目,用于演示Feign的服务调用