此包已被废弃且不再维护。没有建议的替代包。

用于管理本地开发环境中的共享Docker网络的实用程序。

0.9.1.2 2020-12-23 14:07 UTC

This package is auto-updated.

Last update: 2021-09-20 00:36:41 UTC


README

Genly是一个用于管理本地开发环境中共享Docker网络和其他常见服务的实用程序。它受到了Dash的很大启发。

Rokanan一样,它是以Ursula Le Guin的一个角色命名的。

先决条件

安装

使用Composer全局安装Genly,运行

composer global require fostermadeco/genly dev-master

Genly需要几个版本为^4.4的Symfony组件,因为这是当前的Symfony LTS版本。

这意味着您必须升级Rokanan才能并行安装它们。运行

composer global require fostermadeco/rokanan dev-require-php7

这将安装一个具有与Genly相同要求的新版本的Rokanan。如果您在根全局项目中需要任何与^3.4冲突的Symfony组件(如Rokanan README中所述),您必须先删除它们。

功能

Genly将创建自己的Docker网络,并在初始化时创建多个常见Docker容器。这些包括,

  1. 一个nginx代理,以便可以通过项目特定的域名而不是localhost访问多个Web项目。
  2. 一个dnsmasq解析器,将*.test请求路由到nginx代理;这不会干扰/etc/hosts中的任何*.test条目。
  3. 一个可访问于https://mailhog.test的mailhog容器。Web容器应配置为将邮件发送到mailhog(服务名)。
  4. 一个可从网络上其他容器访问的MySQL 5.7容器,地址为mysql57。它也可以通过MySQL客户端如SequelPro或Querious在127.0.0.1:3307上访问。
  5. 一个可从网络上其他容器访问的Postgres 12容器,地址为postgres。它也可以通过Postgres客户端在127.0.0.1:5433上访问 — TablePlus表现良好。

为了与Genly兼容,项目应包含一个定义了web服务和node服务的docker-compose.yml文件。它可以包括任何其他服务,但这些是最低要求的服务。

命令

genly init

此命令将创建genly网络和所有上述容器。

genly init:project

此命令将创建项目中docker-compose.yml文件中定义的任何服务。

在Docker项目中,命令应仅在容器内运行,而不是在主机机器上运行。为了使事情更加简单,genly还提供了以下两个便利命令,以确保composernpm命令分别通过webnode服务运行。

genly composer [...]

例如,genly composer install --no-dev --no-scripts --classmap-authoritative将会在web容器中运行composer install --no-dev --no-scripts --classmap-authoritative

genly npm [...]

例如,genly npm install将会在node容器中运行npm install

如果Webpack和BrowserSync配置正确,甚至可以运行genly npm run watch,并提供在https://sync.example.test上的实时重新加载。

示例docker-compose文件

下面是一个基本的docker-compose文件。

version: '3'

services:
  web:
    image: webdevops/php-nginx:7.4
    expose:
      - 80
    working_dir: /app
    environment:
      WEB_DOCUMENT_ROOT: /app/public
      VIRTUAL_HOST: example.test
      HTTPS_METHOD: redirect
    volumes:
      - .:/app:rw,cached
    networks:
      - genly

  node:
    image: node:12
    expose:
      - 443
    working_dir: /app
    environment:
      VIRTUAL_HOST: sync.example.test
    volumes:
      - .:/app:rw,cached
    command: npm run watch
    links:
      - "web:example.test"
    networks:
      - genly

networks:
  genly:
    external:
      name: genly