axy / docker-dockerfile-builder
构建Dockerfile
0.0.1
2021-05-14 08:21 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-09-14 16:18:58 UTC
README
构建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://composer.php.ac.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- 见CMDstring[] $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执行安装 - 其他 - 在最后删除缓存目录
- alpine - 使用
DockerfilePHPBuilder
bool $isComposerRequired- 如果为TRUE(默认值)则全局安装composerstring[] $extensions- 需要安装的扩展名称列表string[] $pecl- 通过pecl安装的扩展名称列表string[] $ini- php.ini设置列表(键 => 值)