为了账号安全,请及时绑定邮箱和手机立即绑定

在 docker compose 中打开 php.ini 添加扩展

在 docker compose 中打开 php.ini 添加扩展

PHP
慕无忌1623718 2022-01-14 15:46:58
我正在使用 docker compose,我想打开一些扩展并进行编辑。所以基本上我想打开 php.ini 文件。我们如何才能做到这一点。但是我读到的一些解决方案说要在 docker_compose.yaml 中进行更改,我也在共享文件。我正在使用 php laravel 框架,并在 ubuntu 服务器上运行应用程序。非常感谢任何帮助。提前致谢。docker_compose.yaml 看起来像这样。version: '3.7'services:    php:        container_name: eesotne-fpm        build: ./deployment/fpm        image: eesotne-fpm        entrypoint: ./deployment/fpm/entrypoint.sh        volumes:            - ./:/eesotne        depends_on:            - mysql            - redis    mysql:        container_name: eesotne-mysql        image: mysql:5.7        volumes:            - "mysql_data:/var/lib/mysql"        restart: always        environment:            - MYSQL_ROOT_PASSWORD=secret            - MYSQL_DATABASE=eestone            - MYSQL_USER=eestone            - MYSQL_PASSWORD=secret    admin:        container_name: eesotne-adminer        image: adminer        restart: always        depends_on:            - mysql        ports:            - 8081:8080    phpmyadmin:        container_name: eesotne-phpmyadmin        image: phpmyadmin/phpmyadmin        links:            - mysql        ports:            - 8080:80        environment:            MYSQL_USER: eesotne            MYSQL_PASSWORD: secret            MYSQL_ROOT_PASSWORD: secret            MYSQL_DATABASE: eesotne            PMA_HOST: mysql            PMA_PORT: 3306    nginx:        container_name: eesotne-nginx        image: nginx        ports:            - "80:80"        volumes:            - ./deployment/nginx/default.conf:/etc/nginx/conf.d/default.conf            - ./:/eesotne            - ./deployment/logs/nginx:/var/log/nginx        depends_on:            - php    redis:        container_name: eesotne-redis        image: redis        volumes:            - redis_data:/data 
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

您需要创建自定义图像。


不确定您是如何构建图像的,但似乎您已经有了符合您的规范的 docker 文件。


如果您使用官方镜像作为基础镜像来启用镜像,那么构建 docker 镜像非常容易。


配置php.ini好的做法是预先配置一个php.ini并将其复制到映像中以替换默认值。


FROM php:7.3-fpm

RUN docker-php-ext-install pdo pdo_mysql opcache

COPY config/php.ini /php.init

RUN mv /php.ini "$PHP_INI_DIR/php.ini"

希望这能有所帮助。


另一种肮脏的方法可能是php.ini使用 sed 命令使用 shell 脚本更新您的值,以替换您的值。


查看完整回答
反对 回复 2022-01-14
?
智慧大石

TA贡献1946条经验 获得超3个赞

您提到某些解决方案需要您编辑docker-compose文件,但根据您的帖子,我不完全确定这是否对您来说是个问题。


您可以将卷映射到本地目录,并让自己在未来自由添加任何 PHP 配置。如果你的容器是基于官方镜像的,你可以这样做:

volumes:
- ./php-conf:/usr/local/etc/php/conf.d

这会将您的本地php-conf目录映射到配置为扫描更多.ini文件的目录。您还可以使用PHP_INI_SCAN_DIRenv 变量覆盖它:

可以将 PHP 配置为在读取 php.ini 后扫描目录中的 .ini 文件。这可以通过设置 --with-config-file-scan-dir 选项在编译时完成。在 PHP 5.2.0 及更高版本中,可以通过设置 PHP_INI_SCAN_DIR 环境变量在运行时覆盖扫描目录。

在那里,您可以将想要覆盖的任何配置放入.ini文件中。


查看完整回答
反对 回复 2022-01-14
  • 2 回答
  • 0 关注
  • 372 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信