在 Docker 上加载自定义 php.ini(图像:php:8.1.2-apache)

Sub*_*nna 2 php apache docker docker-compose

我正在尝试加载我的自定义 .ini 文件

我尝试安装/usr/local/etc/php/conf.d目录以便./php添加 .ini 文件,但它不起作用,我的意思是本地目录php创建了本地目录,但它是空的。

我很好奇的另一件事是,如果相同的配置已经存在于任何已加载的.ini文件中,我的自定义会怎样?.ini会覆盖这些文件吗?(这实际上就是我想要的)。

这是我的Dockerfile

FROM php:8.1.2-apache

RUN apt-get update

# 1. development packages
RUN apt-get install -y \
    git \
    zip \
    curl \
    sudo \
    unzip \
    libicu-dev \
    libbz2-dev \
    libpng-dev \
    libjpeg-dev \
    libmcrypt-dev \
    libreadline-dev \
    libzip-dev \
    libfreetype6-dev \
    g++


# 2. apache configs + document root
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf


# 3. mod_rewrite for URL rewrite and mod_headers for .htaccess extra headers like Access-Control-Allow-Origin-
RUN a2enmod rewrite headers


# 4. start with base php config, then add extensions
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"

RUN docker-php-ext-install \
    bz2 \
    intl \
    iconv \
    bcmath \
    opcache \
    calendar \
    pdo_mysql \
    pdo_mysql \
    zip

# 5. composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
Run Code Online (Sandbox Code Playgroud)

这是docker-compose.yml

version: '3.5'

services:

  # Laravel App
  laravel:
    build:
      context: '.'
    restart: always
    volumes:
      - .:/var/www/html
      # - ./php:/usr/local/etc/php/conf.d  (This doesn't work)

  # MySQL
  mysql:
    image: mysql:8
    restart: always
    volumes:
      - ./run/var:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_PASSWORD=${DB_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}

  # Meilisearch
  meilisearch:
    image: getmeili/meilisearch:latest
    restart: always
    volumes:
      - ./meilisearch/data.ms:/data.ms
    environment:
    - MEILI_MASTER_KEY=${MEILISEARCH_KEY}

networks:
  default:
    name: nginxproxymanager_default
    external: true
Run Code Online (Sandbox Code Playgroud)

提前谢谢了 :)

小智 5

设置直接到文件的路径

    卷:
      - ./:/var/www
      - ./Docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini

检查我的 docker-compose 了解更多信息:https://github.com/JavierAgueroCL/docker-php7.4-with-db-extensions/blob/master/docker-compose.yml