欢迎光临散文网 会员登陆 & 注册

docker-compose 部署 php + nginx + mysql + redis

2022-07-21 13:49 作者:限量版范儿  | 我要投稿

1,在开动之前首先创建php + nginx + mysql + redis的配置和数据存储路径,大概是下图的样子

编辑

// 因为目录全部展开会导致截图不完整,我在这里介绍一下每个目录的功能 mysql    conf: 必要目录,使用默认配置即可,mysql8配置密码加密方式会用到    data: 必要目录,数据存储路径    logs: 必要目录,日志路径 nginx    conf: 必要目录,下面会放 nginx.conf        nginx.conf: 必要文件    conf.d: 不必要目录,相当于vhost        www.conf: 你的站点配置    log: 必要目录,日志路径 php    etc: 必要目录,配置项都在这        php: 必要目录。ini文件要放这里            php.ini: 必要文件,php配置文件        php-fpm.d: 必要目录,fpm非通用配置文件目录            www.conf: 非必要文件,不同用户不同端口不同任务        php-fpm.conf: 必要文件,这是主要配置文件    extension: 必要目录,php定制化目录        Dockerfile: 必要文件,这里将定制你需要的php,必要的原因是docker-compose会从这build    log: 必要目录,日志路径 redis    conf: 必要目录,配置文件目录        redis.conf: 必要文件,配置文件    data: 必要目录,持久化文件所在目录 docker-compose.yaml: 必要文件            


 2,创建好目录后,我们先来定制我们的php吧,这个Dockerfile你可以先build了,因为在docker-compose要直接用,镜像名字随意,我这里用php74

// 该装的都装上// 版本7.4 FROM php:7.4-fpm// composer RUN curl -sS https://getcomposer.org/installer | php \    && mv composer.phar /usr/bin/composer && chmod +x /usr/bin/composer// 各种依赖库和扩展 RUN apt-get update \    && apt-get install -y \    build-essential \    libmagickcore-dev \    libmagickwand-dev \    imagemagick \    libfreetype6-dev \    libmcrypt-dev \    libpng-dev \    libzip-dev \    libwebp-dev \    && docker-php-ext-configure gd  --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2/ \    && docker-php-ext-install -j$(nproc) gd iconv  pdo_mysql  mysqli bcmath calendar exif gettext sockets dba  pcntl  shmop sysvmsg sysvsem sysvshm zip \    && pecl install redis-5.1.1 \    && pecl install imagick \    && pecl install mcrypt \    && docker-php-ext-enable redis imagick mcrypt// 这句很重要,如果和你的nginx用户不同会导致你的服务起不来 RUN groupadd www && useradd -g www www// 如果你需要别的扩展,还可以再加


3,好了,开始制作一下docker-compose.yaml吧

version: '3' services:  php:    container_name: "php74" // 可以直接用php镜像,但是出来可能缺东西,而且环境也不完整//    image: php:7.4    build: ./docker-manager/php/extension // 这个目录放上我们刚才做好的定制化php的Dockerfile    ports:      - "9000:9000" // fpm 端口//    restart: always    volumes:      - ./docker-manager/php/etc:/usr/local/etc // 映射配置文件      - ./docker-manager/php/log:/var/log/php // 日志文件映射      // 内部逻辑:这个必须加,因为nginx将请求转发给php后,实际上是php去执行了脚本解析      - /Users/guoyi/php/src:/www // 项目目录,我所有的php项目都在src下面,只要去增加nginx配置就可以了,很方便。    stdin_open: true // stdin_open configures service containers to run with an allocated stdin.    tty: true // tty configure service container to run with a TTY.    links:      - "mysql" // 链接mysql服务    networks:      app_net:        ipv4_address: 10.10.10.3 // 分配ip    environment:        - TZ=Asia/Shanghai # 设置时区  nginx:    container_name: "nginx"    image: nginx:latest//    build: ./docker-manager/nginx // 也可以定制哟    restart: always    ports:      - "80:80"      - "443:443"    environment:      - TZ=Asia/Shanghai    depends_on:      - "php" // nginx必须依赖php的,所以要用depends_on    links:      - "php:php74" // 链接php    volumes:      - ./docker-manager/nginx/conf.d:/etc/nginx/conf.d // 子配置文件      - ./docker-manager/nginx/conf/nginx.conf:/etc/nginx/nginx.conf // 主配置文件      - ./docker-manager/nginx/log:/var/log/nginx/ // 日志    networks:      app_net:        ipv4_address: 10.10.10.2 // 分配ip  mysql:    container_name: "mylsql"    image: mysql:5.7    ports:      - "13306:3306"    volumes:      - ./docker-manager/mysql/data:/var/lib/mysql // 数据目录      - ./docker-manager/mysql/conf:/etc/mysql/conf.d // 配置文件      - ./docker-manager/mysql/logs:/data/mysql/logs // 日志    restart: always    environment:      - TZ=Asia/Shanghai      - MYSQL_ROOT_PASSWORD=123456 // 初始化密码    networks:      app_net:        ipv4_address: 10.10.10.1 // ip  redis:    container_name: redis    image: redis:5    restart: always    ports:      - "6379:6379"    volumes:      - ./docker-manager/redis/conf:/usr/local/etc/redis // 配置文件      - ./docker-manager/redis/data:/data // 数据目录    command:      redis-server /usr/local/etc/redis/redis.conf --requirepass 123456 // 启动redis    environment:      - TZ=Asia/Shanghai networks: // 定义网络  app_net:    driver: bridge    driver_opts:      com.docker.network.enable_ipv6: "true"    ipam:      config:        - subnet: 10.10.0.0/16


4,到此,环境相关的东西就都准备好了,我们只需要把我们的项目挂载到php容器下面的volumes下面,那就可以直接进行开发调试了。

https://www.dianjilingqu.com/441648.html

docker-compose 部署 php + nginx + mysql + redis的评论 (共 条)

分享到微博请遵守国家法律