当前位置: 博客首页>> 经验分享 >> 阅读正文

分享一个平时开发用的dnmp环境

作者: 分类: 经验分享 发布于: 2023-04-14 18:04:47 浏览:1,262 评论(0)


目录结构

  • 根目录
    • mysql 目录
      • conf 配置文件目录
      • data 数据文件目录
    • nginx 目录
      • conf.d 站点配置目录
      • log 日志文件目录
      • nginx.conf 配置文件
    • php 目录
      • conf 配置文件目录
      • Dockerfile 镜像创建文件
    • projects 项目目录
    • redis 目录
      • conf 配置文件目录
      • data 数据文件目录
    • .env 配置文件
    • docker-compose.yml docker-compose文件

php 目录下 Dockerfile 文件内容

ARG PHP_VERSION
FROM php:${PHP_VERSION}-fpm
LABEL maintaner="378772944@qq.com"

# 使用 阿里源 替换
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 && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev vim wget \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd && docker-php-ext-install pdo_mysql

# 安装 PECL 拓展,安装swoole*
RUN pecl install swoole && docker-php-ext-enable swoole

# 安装 opcache 扩展
RUN docker-php-ext-configure opcache --enable-opcache && docker-php-ext-install opcache

# 安装 php-redis
RUN pecl install redis && docker-php-ext-enable redis

# 安装zip
RUN apt-get install -y --no-install-recommends libzip-dev && rm -r /var/lib/apt/lists/* && docker-php-ext-install -j$(nproc) zip

# 安装composer
RUN wget https://getcomposer.org/composer.phar && mv composer.phar /usr/local/bin/composer && chmod +x /usr/local/bin/composer

.env 文件内容

PHP_SOURCE_DIR=./projects/php
GOLANG_SOURCE_DIR=./projects/golang
HTTP_HOST=80

NGINX_VERSION=latest
NGINX_CONFD_DIR=./nginx/conf.d
NGINX_CONF_FILE=./nginx/nginx.conf
NGINX_LOG_DIR=./nginx/log

MYSQL_VERSION=latest
MYSQL_DATA_DIR=./mysql/data
MYSQL_CONFG_FILE=./mysql/conf/my.cnf

PHP_VERSION=7.4
PHP_CONFIG_FILE=./php/conf/php.ini
PHP_FPM_CONFIG_FILE=./php/conf/php-fpm.conf

REDIS_VERSION=latest
REDIS_CONFIG_FILE=./redis/conf/redis.conf
REDIS_DATA_DIR=./redis/data

GO_VERSION=latest

docker-compose.yml 文件内容

version: "3"

services:
  web:
    image: nginx:${NGINX_VERSION}
    volumes:
      - ${PHP_SOURCE_DIR}:/var/www/:rw
      - ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw
      - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro
      - ${NGINX_LOG_DIR}:/var/log/nginx/:rw
    ports:
      - ${HTTP_HOST}:80
    environment:
      - NGINX_PORT:80
    links:
      - php
    networks:
      - front-tier
      - back-tier
    restart: always

  db:
    image: mysql:${MYSQL_VERSION}
    volumes:
      - ${MYSQL_DATA_DIR}:/var/lib/mysql:rw
      - ${MYSQL_CONFG_FILE}:/etc/mysql/my.cnf:ro
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: blog
    ports:
      - "3306:3306"
    networks:
      - back-tier
    restart: always

  redis:
    image: redis:${REDIS_VERSION}
    command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
    ports:
      - "6379:6379"
    volumes:
      - ${REDIS_CONFIG_FILE}:/usr/local/etc/redis/redis.conf:ro
      - ${REDIS_DATA_DIR}:/data:rw
    networks:
      - back-tier
    restart: always

  php:
    build:
      context: ./php
      args:
        PHP_VERSION: ${PHP_VERSION}
    volumes:
      - ${PHP_SOURCE_DIR}:/var/www/:rw
      - ${PHP_CONFIG_FILE}:/usr/local/etc/php/php.ini:ro
      - ${PHP_FPM_CONFIG_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
    links:
      - db
      - redis
    #      - es
    cap_add:
      - SYS_PTRACE
    restart: always
    networks:
      - back-tier

#  es:
#    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.1
#    environment:
#      discovery.type: single-node
#    ports:
#      - "9200:9200"
#      - "9300:9300"
#    restart: always
#    networks:
#      - back-tier

networks:
  front-tier:
  back-tier:
       

转载时请注明出处及相应链接。

本文永久链接: http://www.baigei.com/articles/dnmp