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

我正在使用 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


 

慕无忌1623718
浏览 373回答 2
2回答

万千封印

您需要创建自定义图像。不确定您是如何构建图像的,但似乎您已经有了符合您的规范的 docker 文件。如果您使用官方镜像作为基础镜像来启用镜像,那么构建 docker 镜像非常容易。配置php.ini好的做法是预先配置一个php.ini并将其复制到映像中以替换默认值。FROM php:7.3-fpmRUN docker-php-ext-install pdo pdo_mysql opcacheCOPY config/php.ini /php.initRUN mv /php.ini "$PHP_INI_DIR/php.ini"希望这能有所帮助。另一种肮脏的方法可能是php.ini使用 sed 命令使用 shell 脚本更新您的值,以替换您的值。

智慧大石

您提到某些解决方案需要您编辑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文件中。
打开App,查看更多内容
随时随地看视频慕课网APP