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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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表添加数据了, 已经👌

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
前端开发 关系型数据库 MySQL
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
|
1月前
|
搜索推荐 测试技术 数据安全/隐私保护
【Docker项目实战】Docker环境下部署NeonLink书签平台
【2月更文挑战第17天】Docker环境下部署NeonLink书签平台
95 0
|
1月前
|
测试技术 API 开发者
【Docker项目实战】在Docker环境下部署go-file文件分享工具
【2月更文挑战第15天】在Docker环境下部署go-file文件分享工具
67 1
|
1月前
|
安全 测试技术 数据安全/隐私保护
【好用的个人工具】Docker环境下部署FileDrop文件共享工具
【2月更文挑战第13天】Docker环境下部署FileDrop文件共享工具
65 2
|
1月前
|
存储 Linux 数据安全/隐私保护
如何在本地Docker中部署MinIO服务并实现远程访问管理界面
如何在本地Docker中部署MinIO服务并实现远程访问管理界面
206 0
|
1月前
|
弹性计算 关系型数据库 MySQL
阿里云ECS使用docker搭建mysql服务
阿里云ECS使用docker搭建mysql服务
153 1
|
19小时前
|
数据库 Nacos Docker
基于docker-compose部署微服务基本环境
基于docker-compose部署微服务基本环境
4 0
|
21天前
|
关系型数据库 MySQL 数据安全/隐私保护
使用docker快速搭建wordpress服务,并指定域名访问
通过以上步骤,你可以使用Docker快速搭建WordPress服务,并通过指定的域名进行访问。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
22 1
|
21天前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu篇-配置FTP服务,本机和docker安装
通过以上步骤,你可以在Ubuntu上配置FTP服务,无论是本机安装还是Docker内安装,都可以提供FTP文件传输服务。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
21 1
|
22天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
44 6