1. 程式人生 > 其它 >docker-compose建立lnmp環境

docker-compose建立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/*