使用docker-compose搭建lnmpr环境

使用docker-compose搭建lnmpr环境_redis

介绍

docker-compose搭建PHP8.1(含扩展)+ Nginx1.22 + MySQL8.0 + Mongo6.0 + Redis6.0 + Swoole2.0

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Gitee地址:https://gitee.com/owenzhang24/dockercomposelnmp

感谢

在kingsfeng的基础上添加了一些功能和插件 GitHub地址: https://github.com/kingsfeng/dockercomposelnmp

软件架构

docker-compose搭建LNMP环境映射文件目录,clone到指定composer_lnmp74目录,可以一键安装

Compose 简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

如果你还不了解 YML 文件配置,可以先阅读 YAML 入门教程

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

安装教程

1. git clone https://gitee.com/owenzhang24/docker_compose_lnmp.git lnmp
2. cd lnmp
3. docker-compose build
4. docker-compose up -d

具体文件内容docker-compose.yml

``` version: "3.8"

定义四个服务nginx,php,mysql,redis

php-fpm和php-cli可以选着1个安装,看项目,2个一起安装也可以

services:

redis: image: redis:6.0 containername: lnmpredis 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 containername: lnmpmysql volumes: - ./mysql/conf.d:/etc/mysql/my.cnf:ro - ./mysql/data:/var/lib/mysql - ./mysql/log:/data/mysql/logs environment: - MYSQLROOTPASSWORD=root - TZ=Asia/Shanghai

platform: linux/x86_64 #针对mac M1芯片

ports:
  - "3306:3306"
networks:
      - backend
mongo: image: mongo:6.0 containername: lnmpmongo volumes: - ./mongo/data:/data/db - ./mongo/log:/var/log/mongodb environment: - MONGOINITDBROOTUSERNAME=owenweb - MONGOINITDBROOTPASSWORD=owenweb - TZ=Asia/Shanghai ports: - "27017:27017" networks: - backend
php: image: php:8.1-fpm containername: lnmpphp build: ./php/extension #防止启动php失败 stdinopen: true #防止启动php失败 tty: true dependson: - "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 containername: lnmpphpcli build: ./php/extension-phpcli #防止启动php失败 stdinopen: true #防止启动php失败 tty: true dependson: - "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 containername: lnmpnginx # 依赖关系 先跑php nginx必须依赖php的,所以要用dependson dependson: - "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 containername: lnmpnode volumes: - ./node:/node environment: - TZ=Asia/Shanghai ports: - "3000:3000" command: [ "tail", "-f", "/dev/null" ] networks: - backend
networks: frontend: backend: ```
如果安装失败了或者配置文件修改导致build失败可以执行以下步骤再进行重新build
  1. docker-compose stop
点 y 确认后删除所有containers(环境有其他containers的话谨慎执行)
  1. docker-compose rm
删除所有images(环境有其他image的话谨慎执行)
  1. docker rmi $(docker images -q)

使用说明

  1. /docker_compose_lnmp/php/extension/dockerfile 是PHP8.1的常用扩展,包括mysqli、gd、mcrypt、zip、redis、memcache、mongodb、swoole等等
  2. 在/docker_compose_lnmp/ 目录下执行安装命令