docker-compose部署实战

前面学到了docker一些概念 以及docker常用命令,现在来用docker-compose来编排多个容器,通过一个配置文件来处理各个容器所需配置以及关联各个容器通信。以下是我的docker-compose.yaml文件示例:

version: '3'
services:
nginx:
  container_name: local-nginx
  image: nginx:1.16.1
  ports:
    - "20000:80"
    - "20001-20010:20001-20010"
  volumes:
    - $PWD/log/nginx:/var/log/nginx/vhost
    - $PWD/www:/var/www/html
    - $PWD/conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
    - $PWD/conf/nginx/conf.d:/etc/nginx/conf.d:ro
  environment:
    TZ: Asia/Shanghai
  depends_on:
    - php-fpm
  networks:
    - local
php-fpm:
  container_name: local-php-fpm
  build: $PWD/conf/php
  expose:
    - "9000"
  volumes:
    - $PWD/www:/var/www/html
    - $PWD/conf/php/php.ini:/usr/local/etc/php/php.ini:ro
    - $PWD/conf/.ssh:/root/.ssh
  environment:
    TZ: Asia/Shanghai
  depends_on:
    - mysql
    - redis
  networks:
    - local
mysql:
  container_name: local-mysql
  image: mysql:8.0.17
  ports:
    - "3306:3306"
  volumes:
    - $PWD/conf/mysql/conf.d:/etc/mysql/conf.d:ro
    - $PWD/data/mysql:/var/lib/mysql
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: test
    TZ: Asia/Shanghai
  networks:
    - local
redis:
    container_name: local-redis
    image: redis:5.0.5
    ports:
      - "6379:6379"
    volumes:
      - $PWD/data/redis:/data
      - $PWD/conf/redis/redis.conf:/usr/local/etc/redis/redis.conf:ro
    command: redis-server /usr/local/etc/redis/redis.conf --appendonly yes
    environment:
      TZ: Asia/Shanghai
    networks:
      - local
networks:
local:

version: 版本号,不同版本的docker-compose解析语法不一样.(上面示例旧版本执行会报错)

services: 下面是要跑的服务和容器

container_name: 容器名,(注意不是服务名,服务名称是它的上级,服务名称就用来后面docker-composer命令对服务的处理)

image: 镜像,可以是远程仓库的镜像,也可以是本地仓库

build: 是生成镜像的Dockerfile路径

volumes: 目录挂载,可以把相关日志文件,配置文件,和项目目录挂载到容器中去。

environment: 环境变量

expose: 是暴露端口,即只让服务之间可以访问,外部不可以。

port: 映射端口,格式 3306:3306,注意假如启动多个服务,宿主机的端口不能冲突

networks: 网络模式,各个服务之间的网络模式都是相同的,这样各个服务之间就可以相互通讯

command:容器内执行bash命令

运行

在配置文件目录下运行命令:

docker-compose up -d

就会启动相关容器并挂载在后台

注意看文件中挂载的目录及文件,需要自己手动创建。

PS:相关环境要注意的点

nginx服务 端口映射 倘若需要https的也要映射443端口,另外nginx.conf也要挂载一份 方便修改

mysql 服务,配置文件需要挂载,好修改相关配置(例如:修改bindIp为0.0.0.0,才可以远程连接)

php-fpm服务 需要expose露出端口 9000, 这样nginx服务才能内部连接到php-fpm

发表评论

电子邮件地址不会被公开。 必填项已用*标注