Docker六脉神剑(四) 使用Docker-Compose进行服务编排搭建lnmp环境

简介: Docker六脉神剑(四) 使用Docker-Compose进行服务编排搭建lnmp环境

阅读本文你将知道

  • docker-compose的配置文件编写
  • dockerfile的编写

Docker-Compose提要

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

Docker-Compose的工程配置文件默认为docker-compose.yml,使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project

Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

Docker-Compose安装

  • ubuntu
1. apt-get update
2. apt-get install docker-compose
  • mac
安装图形化工具, 默认应该带的 如果没有使用brew安装
  • windows
安装图形化工具, 默认应该带的

编写docker-compose.yml及容器相关dockerfile

  • 先相关创建项目目录
// 创建php-fpm/nginx的配置文件 目录 用于映射
// 手动构建Dockerfile
mkdir ~/docker                  
mkdir ~/docker/aoppp
mkdir ~/docker/aoppp/nginx
touch ~/docker/aoppp/nginx/nginx.conf
mkdir ~/docker/aoppp/php-fpm
touch ~/docker/aoppp/php-fpm/Dockerfile
touch ~/docker/aoppp/php-fpm/php-ini-overrides.ini
touch ~/docker/aoppp/docker-compose.yml
  • docker-compose.yml
version: "3.1"
services:
    mysql:
      image: mysql:5.7
      container_name: php-longing-mysql
      working_dir: /application
      volumes:
        - .:/application
      environment:
        - MYSQL_ROOT_PASSWORD=1234567
        - MYSQL_DATABASE=test
        - MYSQL_USER=test
        - MYSQL_PASSWORD=1234567
      ports:
        - "8086:3306"
    webserver:
      image: nginx:alpine
      container_name: php-longing-webserver
      working_dir: /application
      volumes:
          - ./www:/application
          - ./aoppp/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      ports:
       - "81:80"
    php-fpm:
      build: aoppp/php-fpm
      container_name: php-longing-php-fpm
      working_dir: /application
      volumes:
        - ./www:/application
        - ./aoppp/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
  • nginx.conf
server {
    listen 80;
    client_max_body_size 108M;
    access_log /var/log/nginx/application.access.log;
    server_name www.longing.com;
    root /application/bbs/public;
    index index.php;
    if (!-e $request_filename) {
        rewrite ^.*$ /index.php last;
    }
    location ~ \.php$ {
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        include fastcgi_params;
    }
}
  • Dockerfile
FROM phpdockerio/php72-fpm:latest
WORKDIR "/application"
# Fix debconf warnings upon build
ARG DEBIAN_FRONTEND=noninteractive
# Install selected extensions and other stuff
RUN apt-get update \
    && apt-get -y --no-install-recommends install  php-memcached php7.2-mysql php7.2-pgsql php-redis php7.2-sqlite3 php-xdebug php7.2-bz2 php7.2-gd php-igbinary php7.2-imap php-ssh2 php-yaml \
    && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
# Install git
RUN apt-get update \
    && apt-get -y install git \
    && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
# Install vim
RUN apt-get update \
    && apt-get -y install vim \
    && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
  • php-ini-overrides.ini
upload_max_filesize = 100M
post_max_size = 108M

docker-compose操作

docker-compose.yml文件已经完成,相关端口、目录映射,Dockerfile也已经可以了。那这个时候需要使用docker-compose来启动这个项目

首先进入docker-compose.yml所在的目录,然后运行 docker-compose up启动项目,可以看到如下图

  • docker-compose相关命令
docker-compose up   // 直接启动 可以看到日志输出
docker-compose up -d // 后台启动
docker-compose stop // 停止项目
docker-compose restart // 重启项目
docker-compose down  // 会停掉容器,并删除掉容器

容器已经启动成功了,然后我们安装一个laravel项目来测试

配置Laravel项目启动实现数据库查询

博主这边打算配置Laravel来进行数据库查询, 所以我这边进入容器利用composer安装。

  • composer阿里镜像
# 进入容器
docker exec -it php-longing-php-fpm bash
# 配置阿里云镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 直接创建laravel项目
composer create-project --prefer-dist laravel/laravel bbs "5.6.*"
  • Laravel配置数据库连接
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=test
DB_PASSWORD=1234567
  • 编写laravel路由
// routers/web.php
Route::get('/test', function () {
   $res = \DB::table('test')->select()->get();
   dd($res);
});

我已经利用navicattest表添加数据了, 已经👌

本文为作者原创,手码不易,允许转载,转载后请以链接形式说明文章出处。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
5月前
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
473 11
|
9月前
|
关系型数据库 MySQL 应用服务中间件
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
647 23
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
647 78
|
10月前
|
关系型数据库 应用服务中间件 Linux
Linux云服务器如何搭建LNMP环境
LNMP环境是Linux系统中常用的Web服务架构,由Linux、Nginx、MySQL/MariaDB和PHP组成,适用于高效托管动态网站。本文以CentOS 7为例,详细介绍了LNMP环境的搭建步骤,包括Nginx、MariaDB和PHP的安装与配置,以及最终通过创建`index.php`文件验证环境是否成功部署。具体操作涵盖配置YUM仓库、安装服务、编辑配置文件、启动服务等关键步骤,确保用户能够顺利搭建并运行LNMP环境。
229 1
Linux云服务器如何搭建LNMP环境
|
10月前
|
NoSQL MongoDB 数据库
使用 docker 快速搭建开发环境的 mongodb 服务
本指南介绍如何使用 Docker 和 Docker Compose 部署 MongoDB 和 Mongo Express。首先,通过 Docker 命令分别启动 MongoDB(镜像 `mongo:7.0.14`)和 Mongo Express(镜像 `mongo-express:1.0.2-20-alpine3.19`),并配置环境变量确保两者能正确连接。接着,提供了一个 `docker-compose.yaml` 文件示例,包含 MongoDB 数据卷、健康检查及服务依赖配置,简化多容器管理。
1617 2
|
11月前
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
776 19
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
658 24
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
633 6
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
2003 10
|
应用服务中间件 PHP nginx
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。希望本文能帮助你更好地理解和使用Docker Compose来管理和部署复杂的应用程序。
651 4