version: "3"
services:
nginx:
build:
context: ./services/nginx
args:
NGINX_VERSION: nginx:${NGINX_VERSION}
CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
NGINX_INSTALL_APPS: ${NGINX_INSTALL_APPS}
container_name: nginx
ports:
- "${NGINX_HTTP_HOST_PORT}:80"
- "${NGINX_HTTPS_HOST_PORT}:443"
volumes:
- ${SOURCE_DIR}:/www/:rw
- ${NGINX_SSL_CERTIFICATE_DIR}:/ssl:rw
- ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw
- ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro
- ${NGINX_FASTCGI_PHP_CONF}:/etc/nginx/fastcgi-php.conf:ro
- ${NGINX_FASTCGI_PARAMS}:/etc/nginx/fastcgi_params:ro
- ${NGINX_LOG_DIR}:/var/log/nginx/:rw
environment:
TZ: "$TZ"
restart: always
networks:
- default
php:
build:
context: ./services/php
args:
PHP_VERSION: php:${PHP_VERSION}-fpm-alpine
CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
PHP_EXTENSIONS: ${PHP_EXTENSIONS}
TZ: "$TZ"
container_name: php
expose:
- 9501
extra_hosts:
- "www.site1.com:172.17.0.1"
volumes:
- ${SOURCE_DIR}:/www/:rw
- ${PHP_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
- ${PHP_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
- ${PHP_LOG_DIR}:/var/log/php
- ${DATA_DIR}/composer:/tmp/composer
restart: always
cap_add:
- SYS_PTRACE
networks:
- default
# php80:
# build:
# context: ./services/php80
# args:
# PHP_VERSION: php:${PHP80_VERSION}-fpm-alpine3.13
# CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
# PHP_EXTENSIONS: ${PHP80_EXTENSIONS}
# TZ: "$TZ"
# container_name: php80
# expose:
# - 9501
# volumes:
# - ${SOURCE_DIR}:/www/:rw
# - ${PHP80_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
# - ${PHP80_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
# - ${PHP80_LOG_DIR}:/var/log/php
# - ${DATA_DIR}/composer:/tmp/composer
# restart: always
# cap_add:
# - SYS_PTRACE
# networks:
# - default
# php56:
# build:
# context: ./services/php
# args:
# PHP_VERSION: php:${PHP56_VERSION}-fpm-alpine
# CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
# PHP_EXTENSIONS: ${PHP56_EXTENSIONS}
# TZ: "$TZ"
# container_name: php56
# expose:
# - 9501
# volumes:
# - ${SOURCE_DIR}:/www/:rw
# - ${PHP56_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
# - ${PHP56_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
# - ${PHP56_LOG_DIR}:/var/log/php
# - ${DATA_DIR}/composer:/tmp/composer
# restart: always
# cap_add:
# - SYS_PTRACE
# networks:
# - default
# php54:
# build:
# context: ./services/php54
# args:
# PHP_VERSION: php:${PHP54_VERSION}-fpm
# CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
# PHP_EXTENSIONS: ${PHP54_EXTENSIONS}
# TZ: "$TZ"
# container_name: php54
# volumes:
# - ${SOURCE_DIR}:/www/:rw
# - ${PHP54_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
# - ${PHP54_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
# - ${PHP54_LOG_DIR}:/var/log/php
# - ${DATA_DIR}/composer:/tmp/composer
# restart: always
# cap_add:
# - SYS_PTRACE
# networks:
# - default
mysql:
image: mysql:${MYSQL_VERSION}
container_name: mysql
ports:
- "${MYSQL_HOST_PORT}:3306"
volumes:
- ${MYSQL_CONF_FILE}:/etc/mysql/conf.d/mysql.cnf:ro
- ${DATA_DIR}/mysql:/var/lib/mysql/:rw
restart: always
networks:
- default
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
TZ: "$TZ"
# mysql5:
# image: mysql:${MYSQL5_VERSION}
# container_name: mysql5
# ports:
# - "${MYSQL5_HOST_PORT}:3306"
# volumes:
# - ${MYSQL5_CONF_FILE}:/etc/mysql/conf.d/mysql.cnf:ro
# - ${DATA_DIR}/mysql5:/var/lib/mysql/:rw
# restart: always
# networks:
# - default
# environment:
# MYSQL_ROOT_PASSWORD: "${MYSQL5_ROOT_PASSWORD}"
# TZ: "$TZ"
# openresty:
# image: openresty/openresty:${OPENRESTY_VERSION}
# container_name: openresty
# ports:
# - "${OPENRESTY_HTTP_HOST_PORT}:80"
# - "${OPENRESTY_HTTPS_HOST_PORT}:443"
# volumes:
# - ${SOURCE_DIR}:/www/:rw
# - ${OPENRESTY_CONFD_DIR}:/etc/nginx/conf.d/:ro
# - ${OPENRESTY_SSL_CERTIFICATE_DIR}:/ssl:rw
# - ${OPENRESTY_CONF_FILE}:/usr/local/openresty/nginx/conf/nginx.conf:ro
# - ${OPENRESTY_FASTCGI_PHP_CONF}:/usr/local/openresty/nginx/conf/fastcgi-php.conf:ro
# - ${OPENRESTY_CONF_FASTCGIPARAMS_FILE}:/usr/local/openresty/nginx/conf/fastcgi_params:ro
# - ${OPENRESTY_LOG_DIR}:/var/log/nginx/:rw
# environment:
# TZ: "$TZ"
# networks:
# - default
# redis:
# image: redis:${REDIS_VERSION}
# container_name: redis
# ports:
# - "${REDIS_HOST_PORT}:6379"
# volumes:
# - ${REDIS_CONF_FILE}:/etc/redis.conf:ro
# - ${DATA_DIR}/redis:/data/:rw
# restart: always
# entrypoint: ["redis-server", "/etc/redis.conf"]
# environment:
# TZ: "$TZ"
# networks:
# - default
# memcached:
# image: memcached:${MEMCACHED_VERSION}
# container_name: memcached
# ports:
# - "${MEMCACHED_HOST_PORT}:11211"
# environment:
# MEMCACHED_CACHE_SIZE: "${MEMCACHED_CACHE_SIZE}"
# networks:
# - default
# rabbitmq:
# build:
# context: ./services/rabbitmq
# args:
# RABBITMQ_VERSION: ${RABBITMQ_VERSION}
# RABBITMQ_PLUGINS: ${RABBITMQ_PLUGINS}
# container_name: rabbitmq
# restart: always
# ports:
# - "${RABBITMQ_HOST_PORT_C}:5672"
# - "${RABBITMQ_HOST_PORT_S}:15672"
# environment:
# TZ: "$TZ"
# RABBITMQ_DEFAULT_USER: "${RABBITMQ_DEFAULT_USER}"
# RABBITMQ_DEFAULT_PASS: "${RABBITMQ_DEFAULT_PASS}"
# networks:
# - default
# phpmyadmin:
# image: phpmyadmin/phpmyadmin:latest
# container_name: phpmyadmin
# ports:
# - "${PHPMYADMIN_HOST_PORT}:80"
# volumes:
# - ${PHPMYADMIN_USER_CONF_FILE}:/etc/phpmyadmin/config.user.inc.php:ro
# - ${PHPMYADMIN_PHP_CONF_FILE}:/usr/local/etc/php/conf.d/php-phpmyadmin.ini:ro
# networks:
# - default
# environment:
# - PMA_HOST=mysql
# - PMA_PORT=3306
# - TZ=$TZ
# phpredisadmin:
# image: erikdubbelboer/phpredisadmin:latest
# container_name: phpredisadmin
# ports:
# - "${REDISMYADMIN_HOST_PORT}:80"
# networks:
# - default
# environment:
# - REDIS_1_HOST=redis
# - REDIS_1_PORT=6379
# - TZ=$TZ
# mongodb:
# image: mongo:${MONGODB_VERSION}
# container_name: mongodb
# environment:
# MONGO_INITDB_ROOT_USERNAME: "${MONGODB_INITDB_ROOT_USERNAME}"
# MONGO_INITDB_ROOT_PASSWORD: "${MONGODB_INITDB_ROOT_PASSWORD}"
# TZ: "$TZ"
# volumes:
# - ${DATA_DIR}/mongo:/data/db:rw
# - ${DATA_DIR}/mongo_key:/mongo:rw
# ports:
# - "${MONGODB_HOST_PORT}:27017"
# networks:
# - default
# command:
# --auth
# adminmongo:
# image: mrvautin/adminmongo
# container_name: adminmongo
# ports:
# - "${ADMINMONGO_HOST_PORT}:1234"
# environment:
# - HOST=0.0.0.0
# - DB_HOST=mongodb
# - DB_PORT=27017
# networks:
# - default
# elasticsearch:
# build:
# context: ./services/elasticsearch
# args:
# ELASTICSEARCH_VERSION: ${ELASTICSEARCH_VERSION}
# ELASTICSEARCH_PLUGINS: ${ELASTICSEARCH_PLUGINS}
# container_name: elasticsearch
# environment:
# - TZ=$TZ
# - discovery.type=single-node
# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# volumes:
# - ${DATA_DIR}/esdata:/usr/share/elasticsearch/data
# - ${ELASTICSEARCH_CONF_FILE}:/usr/share/elasticsearch/config/elasticsearch.yml
# hostname: elasticsearch
# restart: always
# ports:
# - "${ELASTICSEARCH_HOST_PORT_C}:9200"
# - "${ELASTICSEARCH_HOST_PORT_S}:9300"
# kibana:
# image: kibana:${KIBANA_VERSION}
# container_name: kibana
# environment:
# TZ: "$TZ"
# elasticsearch.hosts: http://elasticsearch:9200
# I18N_LOCALE: "${KIBANA_I18N_LOCALE}"
# hostname: kibana
# depends_on:
# - elasticsearch
# restart: always
# ports:
# - "${KIBANA_HOST}:5601"
# logstash:
# image: logstash:${LOGSTASH_VERSION}
# container_name: logstash
# hostname: logstash
# restart: always
# depends_on:
# - elasticsearch
# environment:
# TZ: "$TZ"
# ports:
# - "${LOGSTASH_HOST_PORT_C}:9600"
# - "${LOGSTASH_HOST_PORT_S}:5044"
# node:
# image: node:${NODE_VERSION}
# environment:
# - NODE_ENV=production
# volumes:
# - ${SOURCE_DIR}:/www/:rw
# expose:
# - "8081"
# networks:
# - default
# stdin_open: true
# tty: true
# supervisor:
# build:
# context: ./services/supervisor
# args:
# ALPINE_VERSION: alpine:${ALPINE_VERSION}
# TZ: "$TZ"
# CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
# container_name: supervisor
# ports:
# - "${SUPERVISOR_HOST_PORT_C}:9001"
# volumes:
# - ${SOURCE_DIR}:/www/:rw
# - ${SUPERVISOR_LOG}:/var/log/supervisor/:rw
# - ${SUPERVISOR_CONFIG}:/etc/supervisor/conf.d/:rw
# - ${SUPERVISOR_CONF_FILE}:/etc/supervisor/supervisord.conf:ro
# command:
# - /bin/sh
# - -c
# - |
# supervisord -n -c /etc/supervisor/supervisord.conf
# restart: always
# cap_add:
# - SYS_PTRACE
# networks:
# - default
networks:
default:
env文件:
langhuaili@langhuailideiMac dnmp % cat env.sample
#
# PHP source directory
#
SOURCE_DIR=./www
#
# Runtime data directory
#
DATA_DIR=./data
#
# Container Timezone
#
TZ=Asia/Shanghai
#
# Container package fetch url
#
# Can be empty, followings or others:
# mirrors.163.com
# mirrors.aliyun.com
# mirrors.ustc.edu.cn
# dl-cdn.alpinelinux.org
#
CONTAINER_PACKAGE_URL=mirrors.ustc.edu.cn
#
#ALPINE
#
ALPINE_VERSION=3.12
#
# Nginx
#
NGINX_VERSION=1.19.1-alpine
NGINX_HTTP_HOST_PORT=80
NGINX_HTTPS_HOST_PORT=443
NGINX_CONFD_DIR=./services/nginx/conf.d
NGINX_CONF_FILE=./services/nginx/nginx.conf
NGINX_FASTCGI_PHP_CONF=./services/nginx/fastcgi-php.conf
NGINX_FASTCGI_PARAMS=./services/nginx/fastcgi_params
NGINX_SSL_CERTIFICATE_DIR=./services/nginx/ssl
NGINX_LOG_DIR=./logs/nginx
# Available apps: certbot
NGINX_INSTALL_APPS=
#
# Openresty
#
OPENRESTY_VERSION=alpine
OPENRESTY_HTTP_HOST_PORT=80
OPENRESTY_HTTPS_HOST_PORT=443
OPENRESTY_CONFD_DIR=./services/openresty/conf.d
OPENRESTY_CONF_FILE=./services/openresty/openresty.conf
OPENRESTY_FASTCGI_PHP_CONF=./services/openresty/fastcgi-php.conf
OPENRESTY_CONF_FASTCGIPARAMS_FILE=./services/openresty/fastcgi_params
OPENRESTY_SSL_CERTIFICATE_DIR=./services/openresty/ssl
OPENRESTY_LOG_DIR=./logs/nginx
#
# SUPERVISOR
#
SUPERVISOR_CONFIG=./services/supervisor/conf.d/
SUPERVISOR_LOG=./logs/supervisor
SUPERVISOR_CONF_FILE=./services/supervisor/supervisord.conf
SUPERVISOR_HOST_PORT_C=9001
#
# PHP8
#
# Available PHP_EXTENSIONS:
#
# pdo_mysql,zip,pcntl,mysqli,mbstring,exif,bcmath,calendar,
# sockets,gettext,shmop,sysvmsg,sysvsem,sysvshm,pdo_rebird,
# pdo_dblib,pdo_oci,pdo_odbc,pdo_pgsql,pgsql,oci8,odbc,dba,
# gd,intl,bz2,soap,xsl,xmlrpc,wddx,curl,readline,snmp,pspell,
# recode,tidy,gmp,imap,ldap,imagick,sqlsrv,mcrypt,opcache,
# redis,memcached,xdebug,swoole,pdo_sqlsrv,sodium,yaf,mysql,
# amqp,mongodb,event,rar,ast,yac,yar,yaconf,msgpack,igbinary,
# seaslog,varnish,xhprof,xlswriter,memcache,rdkafka,zookeeper,
# psr,phalcon,sdebug,ssh2,yaml,protobuf,hprose
#
# You can let it empty to avoid installing any extensions,
# or install multi plugins as:
# PHP_EXTENSIONS=pdo_mysql,mysqli,gd,curl,opcache
#
PHP80_VERSION=8.0.9
PHP80_PHP_CONF_FILE=./services/php80/php.ini
PHP80_FPM_CONF_FILE=./services/php80/php-fpm.conf
PHP80_LOG_DIR=./logs/php80
PHP80_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache
#
# PHP7
#
# Available PHP_EXTENSIONS:
#
# pdo_mysql,zip,pcntl,mysqli,mbstring,exif,bcmath,calendar,
# sockets,gettext,shmop,sysvmsg,sysvsem,sysvshm,pdo_rebird,
# pdo_dblib,pdo_oci,pdo_odbc,pdo_pgsql,pgsql,oci8,odbc,dba,
# gd,intl,bz2,soap,xsl,xmlrpc,wddx,curl,readline,snmp,pspell,
# recode,tidy,gmp,imap,ldap,imagick,sqlsrv,mcrypt,opcache,
# redis,memcached,xdebug,swoole,pdo_sqlsrv,sodium,yaf,mysql,
# amqp,mongodb,event,rar,ast,yac,yar,yaconf,msgpack,igbinary,
# seaslog,varnish,xhprof,xlswriter,memcache,rdkafka,zookeeper,
# psr,phalcon,sdebug,ssh2,yaml,protobuf,hprose
#
# You can let it empty to avoid installing any extensions,
# or install multi plugins as:
# PHP_EXTENSIONS=pdo_mysql,mysqli,gd,curl,opcache
#
PHP_VERSION=7.4.7
PHP_PHP_CONF_FILE=./services/php/php.ini
PHP_FPM_CONF_FILE=./services/php/php-fpm.conf
PHP_LOG_DIR=./logs/php
PHP_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache
#
# PHP5.6
#
PHP56_VERSION=5.6.40
PHP56_PHP_CONF_FILE=./services/php56/php.ini
PHP56_FPM_CONF_FILE=./services/php56/php-fpm.conf
PHP56_LOG_DIR=./logs/php
PHP56_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache
#
# PHP5.4
#
PHP54_VERSION=5.4.45
PHP54_PHP_CONF_FILE=./services/php54/php.ini
PHP54_FPM_CONF_FILE=./services/php54/php-fpm.conf
PHP54_LOG_DIR=./logs/php
PHP54_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache
#
# RABBITMQ
# Available RABBITMQ_PLUGINS:
# rabbitmq_amqp1_0,rabbitmq_auth_backend_ldap,rabbitmq_auth_backend_http,rabbitmq_auth_mechanism_ssl,
# rabbitmq_consistent_hash_exchange,rabbitmq_federation,rabbitmq_federation_management,rabbitmq_management,
# rabbitmq_management_agent,rabbitmq_mqtt,rabbitmq_prometheus,rabbitmq_shovel,rabbitmq_shovel_management,
# rabbitmq_stomp,rabbitmq_tracing,rabbitmq_trust_store,rabbitmq_web_stomp,rabbitmq_web_mqtt,
# rabbitmq_web_stomp_examples,rabbitmq_web_mqtt_examples
#
RABBITMQ_VERSION=management
RABBITMQ_CONF_FILE=./services/rabbitmq/rabbitmq.yml
RABBITMQ_HOST_PORT_C=5672
RABBITMQ_HOST_PORT_S=15672
RABBITMQ_DEFAULT_USER=myuser
RABBITMQ_DEFAULT_PASS=mypass
RABBITMQ_PLUGINS=rabbitmq_amqp1_0
#
# MONGODB
#
MONGODB_VERSION=4.1
MONGODB_HOST_PORT=27017
MONGODB_INITDB_ROOT_USERNAME=root
MONGODB_INITDB_ROOT_PASSWORD=123456
#
# ELASTICSEARCH
#
# Available ELASTICSEARCH_PLUGINS:
#
# amazon-ec2,analysis-icu,analysis-kuromoji,analysis-nori,
# analysis-phonetic,analysis-smartcn,analysis-stempel,
# analysis-ukrainian,discovery-azure-classic,discovery-ec2,
# discovery-file,discovery-gce,google-cloud-storage,
# ingest-attachment,ingest-geoip,ingest-user-agent,mapper-murmur3,
# mapper-size,microsoft-azure-storage,qa,repository-azure,
# repository-gcs,repository-hdfs,repository-s3,store-smb,
# analysis-ik,analysis-pinyin
#
# You can let it empty to avoid installing any plugins,
# or install plugins as:
# ELASTICSEARCH_PLUGINS=analysis-ik,analysis-pinyin
#
ELASTICSEARCH_VERSION=7.1.1
ELASTICSEARCH_CONF_FILE=./services/elasticsearch/elasticsearch.yml
ELASTICSEARCH_HOST_PORT_C=9200
ELASTICSEARCH_HOST_PORT_S=9300
ELASTICSEARCH_PLUGINS=analysis-ik
#
# KIBANA
#
KIBANA_VERSION=7.1.1
KIBANA_HOST=5601
KIBANA_I18N_LOCALE=zh-CN
#
# LOGSTASH
#
LOGSTASH_VERSION=7.1.1
LOGSTASH_HOST=5601
LOGSTASH_HOST_PORT_C=9600
LOGSTASH_HOST_PORT_S=5044
#
# MySQL8
#
MYSQL_VERSION=8.0.13
MYSQL_HOST_PORT=3306
MYSQL_ROOT_PASSWORD=123456
MYSQL_CONF_FILE=./services/mysql/mysql.cnf
#
# MySQL5
#
MYSQL5_VERSION=5.7.28
MYSQL5_HOST_PORT=3305
MYSQL5_ROOT_PASSWORD=123456
MYSQL5_CONF_FILE=./services/mysql5/mysql.cnf
#
# Redis
#
REDIS_VERSION=5.0.3-alpine
REDIS_HOST_PORT=6379
REDIS_CONF_FILE=./services/redis/redis.conf
#
# Memcached
#
MEMCACHED_VERSION=alpine
MEMCACHED_HOST_PORT=11211
MEMCACHED_CACHE_SIZE=128
#
# phpMyAdmin
#
PHPMYADMIN_HOST_PORT=8080
PHPMYADMIN_USER_CONF_FILE=./services/phpmyadmin/config.user.inc.php
PHPMYADMIN_PHP_CONF_FILE=./services/phpmyadmin/php-phpmyadmin.ini
#
# redisMyAdmin
#
REDISMYADMIN_HOST_PORT=8081
#
# AdminMongo
#
ADMINMONGO_HOST_PORT=1234
#
# Node
#
NODE_VERSION=10.16.1-alpine