dockercompose创建lnmp环境

version: "3.8"
services:
  nginx:
    container_name: "nginx"
    image: nginx:latest
    #重启策略:
    #no,默认策略,在容器退出时,不重启容器;
    #on-failure,在容器非正常退出时(退出状态非0),才会重启容器
    #on-failure:3,在容器非正常退出时重启容器,最多重启3次
    #always,在容器退出时,总是重启容器
    #unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
    #端口映射(宿主机8080->nginx容器80,可以映射多个,比如443端口)
    ports:
      - "80:80"
      - "443:443"
    environment:
      - TZ=Asia/Shanghai
    #数据卷挂载
    volumes:
      - "/usr/local/nginx/conf.d:/etc/nginx/conf.d"
      - "/usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf"
      - "/usr/local/nginx/log:/var/log/nginx"
      - "/usr/local/nginx/html:/usr/share/nginx/html"

  php:
    container_name: "php7.3"
#    注意,在version 1里同时使用image和build是不允许的,version 2则可以,如果同时指定了两者,会将build出来的镜像打上名为image标签。
    build: ./php-extension
    image: php7.3-app
    ports:
      - "9000:9000"
    volumes:
      - "/home/www/phpProject:/var/www/html"
      - "/usr/local/php7.3/etc:/usr/local/etc"
      - "/usr/local/php7.3/log/:/var/log/php/"
    stdin_open: true
    tty: true
    #links:
    #      - "mysql"
    # 设置时区
    environment:
      - TZ=Asia/Shanghai
  mysql:
    container_name: "mysql8"
    image: mysql:8
    #mysql的端口
    ports:
      - "3306:3306"
    #数据卷挂载设置
    volumes:
      - "/usr/local/mysql8/data:/var/lib/mysql"
      - "/usr/local/mysql8/etc:/etc/mysql"
      - "/usr/local/mysql8/logs:/data/mysql/logs"
    environment:
      - TZ=Asia/Shanghai # 设置时区
      #设置mysql的密码
      - MYSQL_ROOT_PASSWORD=123456

  redis:
    container_name: "redis"
    image: redis
    ports:
      - "6379:6379"
    volumes:
      - "/usr/local/redis/etc:/usr/local/etc/redis"
      - "/usr/local/redis/data:/data"
    command:
      #执行命令(设置密码和持久化)
     redis-server /usr/local/etc/redis/redis.conf --requirepass 123456 --appendonly yes
     # redis-server /usr/local/etc/redis/redis.conf
    environment:
      - TZ=Asia/Shanghai # 设置时区

networks:
  default:
      name: mynet

在根目录下创建./php-extension/Dockerfile

FROM php:7.3-fpm

# 安装 php 扩展
RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list && rm -Rf /var/lib/apt/lists/* &&  cat /etc/apt/sources.list
RUN apt-get update -y
RUN docker-php-ext-install -j$(nproc) mysqli pdo_mysql shmop iconv sockets calendar

RUN apt-get install -y --no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
    && rm -r /var/lib/apt/lists/* \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && pecl install redis swoole \
    && rm -rf /tmp/pear \
    && docker-php-ext-enable redis swoole \
    && apt-get clean && rm -rf /var/cache/apt/*

  

原文地址:https://www.cnblogs.com/hhwww/p/15671117.html