Utilice docker-compose para crear un entorno lnmpr

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

  1. git clone https://gitee.com/owenzhang24/docker_compose_lnmp.git lnmp
  2. cd lnmp
  3. docker-compose build
  4. 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

  1. 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)

  1. docker-compose rm

Eliminar todas las imágenes (ejecutar con cuidado si hay otras imágenes en el entorno)

  1. ventana acoplable rmi $(imágenes ventana acoplable -q)

Instrucciones de uso

  1. /docker_compose_lnmp/php/extension/dockerfile 是PHP8.1的常用扩展,包括mysqli、gd、mcrypt、zip、redis、memcache、mongodb、swoole等等

  2. 在/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"

Supongo que te gusta

Origin juejin.im/post/7166914465579925512
Recomendado
Clasificación