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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 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
apt-get update
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表添加数据了, 已经👌

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
15天前
|
应用服务中间件 网络安全 nginx
快速上手!使用Docker和Nginx部署Web服务的完美指南
快速上手!使用Docker和Nginx部署Web服务的完美指南
|
8天前
|
监控 Linux 开发者
Docker服务systemd配置文件详解
Docker服务systemd配置文件详解
18 0
|
1天前
|
存储 安全 开发者
【Docker 专栏】Docker 与云存储服务的集成
【5月更文挑战第9天】在数字化时代,Docker和云存储服务的结合为企业和开发者提供了强大工具。Docker的高效性、可移植性和隔离性,加上云存储的扩展性、高可靠性和高可用性,通过集成可以实现数据持久化、便捷部署和资源优化。常见的集成包括AWS S3、Azure Blob Storage和Google Cloud Storage。集成时需注意安全、性能和兼容性问题,未来集成将更加紧密和智能化,助力企业创造更大价值。
【Docker 专栏】Docker 与云存储服务的集成
|
1天前
|
机器学习/深度学习 监控 Kubernetes
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
【5月更文挑战第9天】本文探讨了Docker容器服务的自动扩展与缩容原理及实践,强调其在动态业务环境中的重要性。通过选择监控指标(如CPU使用率)、设定触发条件和制定扩展策略,实现资源的动态调整。方法包括云平台集成和使用Kubernetes等框架。实践中,电商平台和实时数据处理系统受益于此技术。注意点涉及监控数据准确性、扩展速度和资源分配。未来,智能算法将提升扩展缩容的效率和准确性,成为关键技术支持。
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
|
2天前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
|
2天前
|
算法 计算机视觉 Docker
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
|
3天前
|
存储 关系型数据库 Linux
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
26 4
|
3天前
|
NoSQL Unix MongoDB
【docker 】docker-compose 部署mongoDB
【docker 】docker-compose 部署mongoDB
10 1
|
3天前
|
前端开发 API 数据库
【Docker专栏】Docker Compose实战:编排多容器应用
【5月更文挑战第7天】Docker Compose是Docker的多容器管理工具,通过YAML文件简化多容器应用部署。它能一键启动、停止服务,保证开发、测试和生产环境的一致性。安装后,创建`docker-compose.yml`文件定义服务,如示例中的web和db服务。使用`docker-compose up -d`启动服务,通过`docker-compose ps`、`stop`、`down`和`logs`命令管理服务。
【Docker专栏】Docker Compose实战:编排多容器应用
|
11天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用合集之关于在Docker环境中部署和维护PolarDB-X,有相关文章可以参考吗
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。