使用Docker compose编排Laravel应用

前言

Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下。

环境要求

先要安装好Docker 和 Docker compose,而且Docker 仓库镜像最好换成国内的。一般地,我开发电脑上会运行一个Vagrant,然后再在里面运行Docker等应用。

主要思路

Docker官方推荐的是一个容器运行一个服务,所以会有Compose编排,各个服务间通过容器互联技术通信,比如Php服务连接Mysql只用把Host名写成容器名,内部会直接转换成具体ip。代码目录使用数据卷从容器内映射到宿主机,配置文件(Nginx等)也是通过数据卷映射到容器内。

实践

这套服务我已经封装好了,平时用的话只用clone下来直接使用,我这里主要讲下实现思路。

项目地址:https://github.com/rootrl/php...

我的项目目录结构:

php-environment-with-docker/
├── bin
│ ├── composer
│ ├── getContainerIp
│ └── php
├── conf
│ ├── nginx
│ │ └── conf.d
│ │ └── nginx.conf
│ └── redis
│ └── redis.conf
├── docker-compose.yaml
├── Dockerfile.php
├── LICENSE
├── README.MD
└── start

  • bin 这里面都是封装的命令行工具,其实也是Docker容器服务,只不过他们都是用完即走的服务。
  • conf 该目录都是应用的配置目录,会使用Volumn映射到容器内
  • docker-composer.yaml compose 的编排文件,下面会具体讲到
  • Dockerfile.php php的镜像构建(里面会有一些定制,比如改dns,装特殊扩展)
  • start 运行./start就可以启动所有服务,重启也可以运行此命令

docekr-compose.yaml

此文件是compose的编排文件

version: '2'

services:
nginx:
  depends_on:
   - "php"

  image: "nginx"

  volumes:
   - "$PWD/conf/nginx/conf.d:/etc/nginx/conf.d"
   - "$PWD/www:/usr/share/nginx/html"
  ports:
   - "8888:80"
  networks:
   - oa-network
  container_name: "oa-nginx"
  command: /bin/bash -c "mkdir -p /var/www && ln -s /usr/share/nginx/html /var/www && nginx -g 'daemon off;'"
php:
  image: "oa-php-fpm"
  build:
   context: .
   dockerfile: "Dockerfile.php"
  networks:
   - oa-network
  container_name: "oa-php-fpm"
  volumes:
   - "$PWD/www:/var/www/html"

mysql:
  image: mysql:5.7
  volumes:
   - "$PWD/db_data:/var/lib/mysql"
  environment:
   MYSQL_ROOT_PASSWORD: root123
   MYSQL_DATABASE: oa
   MYSQL_USER: oa
   MYSQL_PASSWORD: oa123
  ports:
   - "3306:3306"
  networks:
   - oa-network
  container_name: "oa-mysql"

redis:
  image: "redis"
  ports:
   - "6379:6379"
  networks:
   - oa-network
  volumes:
   - "$PWD/conf/redis/redis.conf:/usr/local/etc/redis/redis.conf"
  container_name: "oa-redis"

networks:
oa-network:
  driver: bridge

这里定义了php-fpm、nignx、mysql、redis四个服务(如果需要其他服务,自行添加)。然后定义了一个公共的networks,这样容器内都可以很方便地进行通信。

比如nginx.conf中

server { listen 80; server_name localhost; root /usr/share/nginx/html/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/public/$fastcgi_script_name; include fastcgi_params; } }

这里与php-fpm的连接方式:php:9000

Dockerfile.php

```FROM php:7.2-fpm
Run echo "nameserver 223.5.5.5" >> /etc/resolv.conf
&& echo "nameserver 223.6.6.6" >> /etc/resolve.conf
&& apt-get update
&& apt-get install -y
libfreetype6-dev
libjpeg62-turbo-dev
libpng-dev
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
&& docker-php-ext-install -j$(nproc) gd
&& docker-php-ext-install mysqli pdo_mysql
&& pecl install swoole
&& pecl install redis
&& docker-php-ext-enable swoole redis


<p>这是Php镜像构建,这里改了dns服务器,并安装了若干php扩展。</p>
<h3>使用</h3>
<h4>启动</h4>
<p>./start 启动所有服务</p>
<h4>命令行</h4>

./bin/php -v

Laravel artisan

./bin/php artisan

```

总结

具体可访问:https://github.com/rootrl/php...

原文地址:https://segmentfault.com/a/1190000015491751

原文地址:https://www.cnblogs.com/lalalagq/p/9980194.html

时间: 2024-10-07 09:01:48

使用Docker compose编排Laravel应用的相关文章

Docker学习 Part-07(Docker Compose 服务编排)

Docker Compose 一.安装Docker Compose # Compose目前已经完全支持Linux.Mac OS和Windows,在我们安装Compose之前,需要先安装Docker.下面我 们以编译好的二进制包方式安装在Linux系统中. curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/

容器编排 Docker Compose

在我们启动容器的时候经常要使用docker run 指定很多参数,当我们需要管理很多容器时,使用这样的方式会给我们的运维人员带来很大的负担,docker compose容器编排工具无疑是解决这个一问题的利器. Docker Compose是用来管理多容器应用的工具,我们可以使用compose file 文件来配置容器的应用和服务,编写好compose file 文件以后,我们只需要使用一条简单的命令就可以创建并启动我们需要的应用. 使用compose一般有三个步骤:1.编写Dockerfile,

Docker Compose 1.18.0 之服务编排详解

一个使用Docker容器的应用,通常由多个容器组成.使用Docker Compose,不再需要使用shell脚本来启动容器.在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 服务编排工具使得Docker应用管理更为方便快捷. Docker Compose网站:https://docs.docke

Docker | 第七章:Docker Compose服务编排介绍及使用

前言 前面章节,我们学习了如何构建自己的镜像文件,如何保存自己的镜像文件.大多都是一个镜像启动.当一个系统需要多个子系统进行配合时,若每个子系统也就是镜像需要一个个手动启动和停止的话,那估计实施人员也会崩溃的,而且效率也很低,维护的量也就很大了.所以,本章节就来了解下,如何利用官方提供的Compose编排工具按一定的业务规则来合理的进行容器启停工作. Compose介绍 Compose安装 二进制文件直接安装 使用pip(Python包管理工具)安装 命令补齐 Compose常用命令 build

Docker Compose服务编排

一.Docker Compose: 服务编排技术:https://github.com/docker/compose/releases 二.安装:(Linux 64位系统) 1)请求安装包:curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2)改变权限:chmod +x /u

Docker容器——Compose编排_consul集群_template模板

docker compose容器编排 (1)docker compose的前身Fig,它是一个定义及运行多个docker容器的工具 (2)使用docker compose不再需要使用shell脚本启动容器 (3)docker compose非常适合组合使用多个容器进行开发的场景 YAML是一种标记语言很直观的数据序列化格式 文件格式及编写注意事项: 不支持制表符tab键缩进,需要使用空格缩进 通常开头缩进2个空格 字符后缩进1个空格,如冒号,逗号,横杆 用井号注释 如果包含特殊字符用单引号引起来

Docker Compose容器编排

本章知识点概括: Docker Compose容器编排构建自动发现的Docker服务架构实现容器服务自动加入Nginx集群 **Docker Compose容器编排功能** Docker compose的前身是Fig,它是一个定义及运行多个docker容器的工具 使用Docker Compose不再需要使用shell脚本来启动容器 Docker Compose非常适合组合是同多个容器进行开发的场景 可以执行多个容器的操作 **Docker Compose容器编排** YAML是一种标记语言很直观

Docker容器之Compose编排、consul集群、template模板

docker compose容器编排 (1)docker compose的前身Fig,它是一个定义及运行多个docker容器的工具(2)使用docker compose不再需要使用shell脚本启动容器(3)docker compose非常适合组合使用多个容器进行开发的场景 YAML是一种标记语言很直观的数据序列化格式 文件格式及编写注意事项: 不支持制表符tab键缩进,需要使用空格缩进 通常开头缩进2个空格 字符后缩进1个空格,如冒号,逗号,横杆 用井号注释 如果包含特殊字符用单引号引起来 布

Docker - 容器编排工具 compose 之安装

准备 首先,在使用和安装 docker compose之前,我们应该确保我们已经安装了 docker engine. 安装 官网上面有好多种安装方式,由于我们现在是在使用Docker, 个人感觉应该以 docker 的方式思考问题--我们将docker-compose以container的方式安装. 1. 检查本机的compose $ docker-compse --help 由于我们没有安装过,所以提示 “docker-compose” command not found 2. 以容器形式安装