使用docker-compose搭建lnmpr环境

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 使用docker-compose搭建lnmpr环境

使用docker-compose搭建lnmpr环境

image.png

介绍

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

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

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

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

Gitee地址:gitee.com/owenzhang24…

感谢

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

软件架构

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
    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:

如果安装失败了或者配置文件修改导致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/ 目录下执行安装命令



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
弹性计算 运维 Linux
Docker环境如何配置?使用阿里云OOS一步搞定!
阿里云OOS简化了ECS上应用部署,提供Docker一键安装服务。支持多种操作系统,包括Alibaba Cloud Linux、CentOS、Ubuntu、Debian和Windows Server。要安装Docker,用户只需在OOS扩展程序中选择并确认实例,执行安装。OOS扩展程序还支持Java、Python等开发环境及宝塔面板、WordPress等应用的快速配置,提升运维效率,让云资源管理更便捷。
53487 3
Docker环境如何配置?使用阿里云OOS一步搞定!
|
2月前
|
Docker 容器
paddleocr 在docker环境下部署_docker部署paddleocr,90%的人看完都说好
paddleocr 在docker环境下部署_docker部署paddleocr,90%的人看完都说好
|
2月前
|
SQL API 流计算
实时计算 Flink版产品使用合集之在Mac M1下的Docker环境中开启SQL Server代理的操作步骤是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
175 1
|
4天前
|
监控 数据可视化 Linux
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
|
28天前
|
Docker 容器
蓝易云 - docker之Consul环境的部署
注意,这只是一个基本的Consul环境的部署。在生产环境中,你可能需要配置更多的选项,如数据持久化、网络设置等。
23 1
|
1月前
|
Docker 容器
蓝易云 - docker环境安装软件、更换镜像源以及E: Unable to locate package xxx解决
"E: Unable to locate package xxx"这个错误通常意味着APT包管理器无法找到你想要安装的软件包。可能的原因包括:软件包名称错误,软件包不存在,或者软件源没有更新。可以尝试更新软件源(`apt-get update`),确保软件包名称正确,或者更换软件源解决这个问题。
209 1
|
10天前
|
Linux Docker 容器
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
|
1月前
|
机器人 开发工具 计算机视觉
基于 docker 环境的 LET-VINS 复现
该文介绍了在Docker环境下实践LET-NET的步骤。从GitHub克隆LET-NET代码,使用Docker运行vins-mono环境。安装ncnn,配置代理,更新源,安装依赖并验证安装成功。在运行LET-NET时遇到opencv版本不兼容,指出怎么安装指定版本的 opencv。解决Docker容器中的显示问题,通过`xhost +`命令运行LET-NET。在ROS中构建VINS-Mono时,cv_bridge找不到的问题,通过安装cv_bridge,设置ROS环境和工作空间,以及解决ncnn的配置问题,最终成功运行VINS-Mono。还需要下载UMA-VI数据集并修改相关路径以运行演示。
|
1月前
|
机器学习/深度学习 安全 测试技术
【Docker项目实战】在Docker环境下使用RustScan端口扫描工具
【6月更文挑战第9天】在Docker环境下使用RustScan端口扫描工具
38 5
|
2月前
|
JSON 测试技术 定位技术
【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具
【5月更文挑战第16天】在Docker环境下部署Simple mind map思维导图工具
145 1
【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具