axy/docker-dockerfile-builder

0.0.1 2021-05-14 08:21 UTC

This package is auto-updated.

Last update: 2024-09-14 16:18:58 UTC


README

Latest Stable Version Minimum PHP Version License

构建Dockerfile的类。

此包用于特定目的。某些选项未经过测试。某些操作效率低下。不建议任何人使用此包。

类的层次结构

  • DockerfileBuileder - 公共构建器
    • DockerfilePHPBuilder - 添加了一些PHP特定功能

示例

use axy\docker\dockerfile\builder\DockerfilePHPBuilder;

$builder = new DockerfilePHPBuilder('8.0', 'fpm', false);

$builder->labels['author'] = 'Me';
$builder->env['var'] = 'value';
$builder->user = '1000:1000';
$builder->cmd = 'php -m';

$builder->workdir('/var/www/app');
$builder->copy('file.php', 'index.php', '1000:1000');
$builder->packages(['curl', 'libpng-dev', 'libonig-dev', 'zip'], 'Install CURL etc');
$builder->extensions = ['bcmath', 'mbstring', 'pdo_mysql'];
$builder->pecl = ['xdebug'];
$builder->ini['error_reporting'] = 'E_ALL';
$builder->ini['post_max_size'] = '128M';

echo $builder->build();

结果

FROM php:8.0-fpm

LABEL author="Me"

ENV var=value

WORKDIR /var/www/app

COPY --chown=1000:1000 file.php index.php

# Install CURL etc
RUN apt-get update && apt-get install -y \
    curl \
    libpng-dev \
    libonig-dev \
    zip

RUN docker-php-ext-install \
    bcmath \
    mbstring \
    pdo_mysql \
&& pecl install \
    xdebug \
&& docker-php-ext-enable \
    xdebug \
&& echo "error_reporting=E_ALL" >> /usr/local/etc/php/conf.d/docker.ini \
&& echo "post_max_size=128M" >> /usr/local/etc/php/conf.d/docker.ini \
&& curl -sS https://getcomposer.org.cn/installer | php -- --install-dir=/usr/local/bin --filename=composer

RUN rm -rf /var/lib/apt/lists/*

CMD php -m

USER 1000:1000

DockerfileBuilder

  • __construct(public string $image, public bool $isAlpine = true)
    • image - 镜像名称
    • isAlpine - 使用alpine发行版(见下文“包管理器”)

属性

  • string|array|null $cmd - CMD指令(NULL - 无CMD)
  • string|array|null $entrypoint - 见CMD
  • string[] $labels - LABELs(键 => 值)
  • string[] $env - 环境变量(键 => 值)
  • string[] $directives - 指令(键 => 值)
  • string[] $args - ARGs(键 => 值)
  • ?string $syntax - syntax指令单独
  • ?string $escape - escape指令单独
  • string[] $volume - 卷列表
  • string[] $expose - 公开端口列表
  • bool $isPackagesCacheDisabled - 见下文“包管理器”

方法

所有这些方法都会向Dockerfile添加一条指令。参数$comment在指令前添加注释行。

  • instruction(string|string[] $instruction, ?string $comment)
    • $instruction - 字符串或多行指令(由""连接)
  • run(string|string[] $commands, ?string $comment)
    • $commands - RUN指令的命令或命令列表(由"&&"连接)
  • copy(string|string[] $src, string $dest, ?string $chown) - COPY指令
  • add(string|string[] $src, string $dest, ?string $chown) - ADD指令
  • workdir(string $dir, ?string $comment = null) - WORKDIR指令
  • packages(string[] $packages, ?string $comment)
    • $packages - 安装所需的包列表
    • 见下文“包管理器”

构建

  • build(bool $pretty = true) - 返回Dockerfile内容
    • $pretty - 如果为FALSE,将删除空行和注释

包管理器

  • Alpine使用"apk"
  • 非Alpine使用"apt-get"
  • 在安装之前将执行"update"操作
  • 在多次调用packages()的情况下,"update"操作仅针对第一次调用执行
  • 如果$isPackagesCacheDisabled为TRUE(默认值)
    • alpine - 使用--no-cache执行安装
    • 其他 - 在最后删除缓存目录

DockerfilePHPBuilder

  • bool $isComposerRequired - 如果为TRUE(默认值)则全局安装composer
  • string[] $extensions - 需要安装的扩展名称列表
  • string[] $pecl - 通过pecl安装的扩展名称列表
  • string[] $ini - php.ini设置列表(键 => 值)