海底暴风雪

富在术数不在劳身,利在局势不在力耕

docker-compose 服务编排

服务编排配置

文件内容

简单的文件结构:

# 这里的版本对应了docker最低允许的版本
version: '3'
# 等多个服务
services:
    #服务名,数据持久化服务
  db:
    #服务使用的镜像
    image: mysql:latest
    restart: always
    # 初始化环境变量,这里的是mysql的数据库和数据库的密码
    environment:
      - MYSQL_DATABASE=dockertest
      - MYSQL_ROOT_PASSWORD=123456789
    # 端口映射
    ports:
      - 3309:3306
    # 数据持久化挂载数据存储卷,也可以挂在外置的配置文件
    volumes:
        # 第一个是宿主机要存放数据的目录,第二个参数一般就是固定的应用再真实主机存放数据的目录
      - /home/fengxinzi/datas/dockertest/mysql/:/var/lib/mysql
    # 通过depends_on告诉docker-compose当前服务启动之前先要把depends_on指定的服务启动起来才行。例如:kafka依赖zookeeper,nginx依赖php-fpm等等。,这里是依赖的redis服务
    depends_on:
      - redis
    # 容器的名
    container_name: db
  
  #应用服务的名
  dockertest:
    # 在这里使用这个是因为应用可以被打包为镜像
    build:
      dockerfile: Dockerfile
        # 执行目录就是项目的根目录
      context: .
    restart: always
    # 端口的映射
    ports:
      - "8866:8877"
    # links的目的是把一个服务的名称在当前服务里面创建一个别名,例如:持久化服务的名称和当前服务的配置文件里面写的不一样,就可以通过这个links改成一样的。本质上就是这个服务里的相应name,也就是可以使用外部的其他服务,这里把服务名添加进来就可以,
    links:
      - db
      - redis
    这个服务必须要在db启动后再启动
    depends_on:
      - db
    container_name: dockertest

  redis:
    restart: always
    # 从docker拉取的镜像
    image: redis:latest
    container_name: redis
    ports:
      - "6399:6379"
    volumes:
        # 第一个是宿主机要存放数据的目录,第二个参数一般就是固定的应用再真实主机存放数据的目录
      - /home/fengxinzi/datas/dockertest/redis/data/:/data

启动服务编排

如果是需要没有要构建的服务,可以直接使用以下命令:

docker-compose up

如果需要先构建镜像就要先build

docker-compose build

搜索

文章分类