Este artículo está participando en el "Proyecto Golden Stone. Comparte 60,000 premios en efectivo"
El entorno de este artículo es docker20.10, PHP8.1 (incluidas las extensiones) + Nginx1.22 + MySQL8.0 + Mongo6.0 + Redis6.0 + Swoole2.0 Si
no entiende, puede comentar o contactarme Correo electrónico: [email protected] Los
derechos de autor pertenecen a Todo Owen Zhang. Para reimpresión comercial, comuníquese con OwenZhang para obtener autorización, para reimpresión no comercial, indique la fuente.
Utilice docker-compose para crear un entorno lnmpr
introducir
docker-compose compila PHP8.1 (incluidas las extensiones) + Nginx1.22 + MySQL8.0 + Mongo6.0 + Redis6.0 + Swoole2.0
Docker es un motor contenedor de aplicaciones de código abierto, basado en el lenguaje Go y de código abierto de conformidad con el protocolo Apache2.0.
Docker permite a los desarrolladores empaquetar sus aplicaciones y dependencias en un contenedor portátil y liviano, que luego se puede distribuir a cualquier máquina Linux popular y también se puede virtualizar.
El contenedor usa completamente el mecanismo de la caja de arena y no habrá una interfaz entre ellos (similar a las aplicaciones de iPhone) y, lo que es más importante, la sobrecarga de rendimiento del contenedor es extremadamente baja.
Dirección de la casa rural : gitee.com/owenzhang24…
agradecido
Se agregaron algunas funciones y complementos sobre la base de la dirección kingsfeng GitHub: github.com/kingsfeng/d…
Arquitectura de software
docker-compose crea el directorio de archivos de mapeo del entorno LNMP, se clona en el directorio composer_lnmp74 especificado y se puede instalar con un solo clic
Introducción a Componer
Compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. Con Compose, puede usar archivos YML para configurar todos los servicios que necesita su aplicación. Luego, con un solo comando, todos los servicios se pueden crear e iniciar desde la configuración del archivo YML.
Si aún no conoce la configuración del archivo YML, puede leer primero el tutorial de introducción a YAML .
Los tres pasos utilizados por Compose:
- Utilice un Dockerfile para definir el entorno de su aplicación.
- Use docker-compose.yml para definir los servicios que componen su aplicación para que puedan ejecutarse juntos de forma aislada.
- Finalmente, ejecute el comando docker-compose up para poner en funcionamiento toda la aplicación.
Tutoría de instalación
git clone https://gitee.com/owenzhang24/docker_compose_lnmp.git lnmp
cd lnmp
docker-compose build
docker-compose up -d
Contenido de archivo específico docker-compose.yml
version: "3.8"
# 定义四个服务nginx,php,mysql,redis
# php-fpm和php-cli可以选着1个安装,看项目,2个一起安装也可以
services:
redis:
image: redis:6.0
container_name: lnmp_redis
build: ./redis
volumes:
- ./redis/redis.conf/:/etc/redis.conf:ro
- ./redis/data:/usr/local/redis/data
- ./redis/redis.log:/usr/local/redis/redis.log
environment:
- TZ=Asia/Shanghai
ports:
- "6379:6379"
command: [ "redis-server", "/etc/redis.conf" ]
networks:
- backend
mysql:
image: mysql:8.0
container_name: lnmp_mysql
volumes:
- ./mysql/conf.d:/etc/mysql/my.cnf:ro
- ./mysql/data:/var/lib/mysql
- ./mysql/log:/data/mysql/logs
environment:
- MYSQL_ROOT_PASSWORD=root
- TZ=Asia/Shanghai
# platform: linux/x86_64 #针对mac M1芯片
ports:
- "3306:3306"
networks:
- backend
mongo:
image: mongo:6.0
container_name: lnmp_mongo
volumes:
- ./mongo/data:/data/db
- ./mongo/log:/var/log/mongodb
environment:
- MONGO_INITDB_ROOT_USERNAME=owenweb
- MONGO_INITDB_ROOT_PASSWORD=owenweb
- TZ=Asia/Shanghai
ports:
- "27017:27017"
networks:
- backend
php:
image: php:8.1-fpm
container_name: lnmp_php
build: ./php/extension
#防止启动php失败
stdin_open: true
#防止启动php失败
tty: true
depends_on:
- "mysql"
- "redis"
- "mongo"
volumes:
- ./nginx/www:/var/www/html
- ./php/log:/var/log/php
- ./php/etc/php.ini:/usr/local/etc/php/php.ini
# - ./php/etc/php-fpm.conf:/usr/local/etc/php-fpm.conf # 映射配置文件
# - ./php/etc/php-fpm.d:/usr/local/etc/php-fpm.d
links:
- mysql:mysql
environment:
- TZ=Asia/Shanghai
ports:
- "9000:9000"
networks:
- frontend
- backend
phpcli:
image: php:8.1-cli
container_name: lnmp_phpcli
build: ./php/extension-phpcli
#防止启动php失败
stdin_open: true
#防止启动php失败
tty: true
depends_on:
- "mysql"
- "redis"
- "mongo"
volumes:
- ./nginx/www:/var/www/html
- ./php/log:/var/log/php
- ./php/etc/php.ini:/usr/local/etc/php/php.ini
# - ./php/etc/php-fpm.conf:/usr/local/etc/php-fpm.conf # 映射配置文件
# - ./php/etc/php-fpm.d:/usr/local/etc/php-fpm.d
links:
- mysql:mysql
environment:
- TZ=Asia/Shanghai
ports:
- "8241:8241"
networks:
- frontend
- backend
nginx:
image: nginx:1.22
container_name: lnmp_nginx
# 依赖关系 先跑php nginx必须依赖php的,所以要用depends_on
depends_on:
- "php"
volumes:
- ./nginx/ssl/:/etc/nginx/ssl/
- ./nginx/conf:/etc/nginx/nginx/ # 主配置文件
- ./nginx/www:/usr/share/nginx/html # 项目目录
- ./nginx/log:/var/log/nginx # 日志
links:
- php:php
- phpcli:phpcli
environment:
- TZ=Asia/Shanghai
ports:
- "80:80"
- "443:443"
networks:
- frontend
node:
image: node:18.0
container_name: lnmp_node
volumes:
- ./node:/node
environment:
- TZ=Asia/Shanghai
ports:
- "3000:3000"
command: [ "tail", "-f", "/dev/null" ]
networks:
- backend
networks:
frontend:
backend:
复制代码
Si la instalación falla o la modificación del archivo de configuración hace que la compilación falle, puede realizar los siguientes pasos y luego reconstruir
- parada docker-compose
Haga clic en y para confirmar y eliminar todos los contenedores (ejecútelo con cuidado si hay otros contenedores en el entorno)
- docker-compose rm
Eliminar todas las imágenes (ejecutar con cuidado si hay otras imágenes en el entorno)
- ventana acoplable rmi $(imágenes ventana acoplable -q)
Instrucciones de uso
-
/docker_compose_lnmp/php/extension/dockerfile 是PHP8.1的常用扩展,包括mysqli、gd、mcrypt、zip、redis、memcache、mongodb、swoole等等
-
在/docker_compose_lnmp/ 目录下执行安装命令
Cómprame una taza de café :)
Si crees que es útil para ti, por favor dame una recompensa, ¡gracias!
Enlace del código de apreciación de WeChat, haga clic para saltar:
www.owenzhang.com/wechat_rewa…
Este artículo está participando en el "Proyecto Golden Stone. Comparte 60,000 premios en efectivo"