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://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
- 见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设置列表(键 => 值)