分享一个平时开发用的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