您的位置:首页 > 运维架构 > Docker

docker-compose简介

2018-12-03 09:20 260 查看

文章目录

  • pig项目示例
  • 参数传递
  • 示例项目

  • 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的服务调用

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: