doker搭建开发环境
nginx、
php、
mysql、redis、mongodb、
redisearch、elasticsearch、meilisearch、xunsearch、
rabbitmq、
kibana
docker-compose.yml
version: '3.7' networks: lnmp-networks: driver: bridge ipam: driver: default config: - subnet: 173.18.0.0/16 services: lnmp_php8: build: context: ./php8-fpm dockerfile: Dockerfile container_name: lnmp-php8-fpm privileged: true volumes: #注意这里的映射,nginx中fastcgi_param SCRIPT_FILENAME /var/www/html/web1$fastcgi_script_name; - ./project:/var/www/html ports: #expose或者ports:9000:9000 - 9000 - 9501 - 9502 - 9503 networks: lnmp-networks: ipv4_address: 173.18.0.2 lnmp_nginx: image: nginx:latest container_name: lnmp-nginx privileged: true ports: - 90:80 - 91:81 - 92:82 - 93:83 - 94:84 - 95:85 volumes: - ./nginx/conf:/etc/nginx/conf.d:ro - ./project:/usr/share/nginx/html:rw - ./nginx/logs:/var/log/nginx:rw networks: lnmp-networks: ipv4_address: 173.18.0.3 lnmp_redis: image: redis:latest container_name: lnmp-redis privileged: true ports: - 6380:6379 volumes: - ./redis/data:/data:rw - ./redis/redis.conf:/usr/local/etc/redis/redis.conf:rw networks: lnmp-networks: ipv4_address: 173.18.0.4 lnmp_mysql: image: mysql:latest command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M container_name: lnmp-mysql ports: - 3307:3306 environment: MYSQL_ROOT_PASSWORD: root TZ: Asia/Shanghai volumes: - ./mysql/data:/var/lib/mysql:rw - ./mysql/log:/var/log/mysql:rw - ./mysql/conf:/etc/mysql/conf.d:ro networks: lnmp-networks: ipv4_address: 173.18.0.5 lnmp_redisearch: image: redislabs/redisearch:latest container_name: lnmp-redisearch privileged: true ports: - 6381:6379 volumes: - ./redisearch/data:/data:rw - ./redisearch/redis.conf:/usr/local/etc/redis/redis.conf:rw networks: lnmp-networks: ipv4_address: 173.18.0.6 lnmp_mongodb: image: mongo:latest container_name: lnmp-mongodb privileged: true ports: - 27018:27017 volumes: - ./mongodb/data:/data/db:rw - ./mongodb/log:/var/log/mongodb:rw - ./mongodb/conf:/etc/mongo:rw networks: lnmp-networks: ipv4_address: 173.18.0.7 lnmp_rabbitmq: # 安装完毕后,进入容器执行rabbitmq-plugins enable rabbitmq_management 打开管理面板 # rabbitmq:latest 最好指定版本management,直接有web管理界面,而latest没有需要手动开启 image: rabbitmq:3.9.14-management container_name: lnmp-rabbitmq privileged: true ports: - 15672:15672 - 5672:5672 environment: RABBITMQ_DEFAULT_USER: rabbitmq RABBITMQ_DEFAULT_PASS: rabbitmq #RABBITMQ_DEFAULT_VHOST: / volumes: - ./rabbitmq/data:/var/lib/rabbitmq:rw networks: lnmp-networks: ipv4_address: 173.18.0.8 lnmp_meilisearch: image: getmeili/meilisearch:latest container_name: lnmp-meilisearch privileged: true ports: - 7700:7700 volumes: - ./meilisearch/data.ms:/data.ms networks: lnmp-networks: ipv4_address: 173.18.0.9 lnmp_xunsearch: image: hightman/xunsearch container_name: lnmp-xunsearch privileged: true ports: - 8383:8383 - 8384:8384 volumes: - ./xunsearch/data:/usr/local/xunsearch/data networks: lnmp-networks: ipv4_address: 173.18.0.10 lnmp_elasticsearch: build: context: ./elasticsearch dockerfile: Dockerfile #image: elasticsearch:8.1.1 container_name: lnmp-elasticsearch privileged: true environment: - node.name=docker-cluster-node - cluster.name=docker-cluster - "ES_JAVA_OPTS=-Xms1g -Xmx1g" - bootstrap.memory_lock=true - xpack.security.enabled=false - discovery.type=single-node - http.cors.enabled=true - http.cors.allow-origin=* ulimits: memlock: soft: -1 hard: -1 ports: - 9200:9200 - 9300:9300 volumes: - ./elasticsearch/certs:/usr/share/elasticsearch/config/certs - ./elasticsearch/data:/usr/share/elasticsearch/data networks: lnmp-networks: ipv4_address: 173.18.0.11 lnmp_kibana: image: kibana:8.1.1 container_name: lnmp-kibana privileged: true environment: ELASTICSEARCH_HOSTS: http://173.18.0.11:9200 SERVER_HOSTS: 0.0.0.0 ports: - 5601:5601 networks: lnmp-networks: ipv4_address: 173.18.0.12 lnmp_es_head: image: mobz/elasticsearch-head:5 container_name: lnmp-es-head privileged: true ports: - 9100:9100 networks: lnmp-networks: ipv4_address: 173.18.0.13
php8-fpm/Dockerfile
FROM php:8.1.4-fpm RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list && rm -Rf /var/lib/apt/lists/* RUN apt-get update -y RUN apt-get upgrade -y RUN apt-get install -y git subversion openssh-client openssl mercurial bash curl libpng-dev libjpeg-dev libfreetype6-dev RUN apt-get install -y libzip-dev RUN echo "memory_limit=-1" > "$PHP_INI_DIR/conf.d/memory-limit.ini" \ && echo "date.timezone=${PHP_TIMEZONE:-UTC}" > "$PHP_INI_DIR/conf.d/date_timezone.ini" RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" RUN php composer-setup.php RUN mv ./composer.phar /usr/bin/composer RUN php -r "unlink('composer-setup.php');" RUN docker-php-ext-install zip pdo pdo_mysql mysqli RUN apt-get install -y libxml2 libxml2-dev #RUN docker-php-ext-install mbstring xml RUN docker-php-ext-install bcmath RUN docker-php-ext-install ctype gd pcntl fileinfo RUN composer config -g repo.packagist composer https://packagist.phpcomposer.com RUN apt-get install -y wget apt-utils RUN cd /usr/local/src \ && wget https://pecl.php.net/get/redis-5.3.7.tgz \ && tar -xzvf redis-5.3.7.tgz \ && mkdir -p /usr/src/php/ext \ && mv redis-5.3.7 /usr/src/php/ext/redis \ && docker-php-ext-install redis RUN cd /usr/local/src \ && wget https://pecl.php.net/get/swoole-4.8.8.tgz \ && tar -xzvf swoole-4.8.8.tgz \ && mkdir -p /usr/src/php/ext \ && mv swoole-4.8.8 /usr/src/php/ext/swoole \ && docker-php-ext-install swoole RUN cd /usr/local/src \ && wget https://pecl.php.net/get/mongodb-1.13.0.tgz \ && tar -xzvf mongodb-1.13.0.tgz \ && mkdir -p /usr/src/php/ext \ && mv mongodb-1.13.0 /usr/src/php/ext/mongodb \ && docker-php-ext-install mongodb #https://github.com/alanxz/rabbitmq-c/archive/refs/tags/v0.11.0.tar.gz #RUN apt-get install -y rabbitmq-c rabbitmq-c-dev RUN apt-get install -y librabbitmq-dev libssh-dev #pecl install amqp RUN cd /usr/local/src \ && wget https://pecl.php.net/get/amqp-1.11.0.tgz \ && tar -xzvf amqp-1.11.0.tgz \ && mkdir -p /usr/src/php/ext \ && mv amqp-1.11.0 /usr/src/php/ext/amqp \ && docker-php-ext-install amqp #WORKDIR /var/www/html #RUN php-fpm
nginx配置
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html/web1; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html/web1; } location ~ \.php$ { fastcgi_pass 173.18.0.2:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/web1$fastcgi_script_name; include fastcgi_params; } }
运行容器
#docker-compose up -d docker-compose up --build
下载
访客评论