我需要编辑 bitnami/moodle 容器中的
php.ini
文件。由于我无法在容器内安装文本编辑器,因此我尝试将文件安装到我的主机上。容器中的相关文件是/opt/bitnami/php/etc/php.ini
。
下面是我使用的
docker-compose.yml
文件的摘录。我尝试以多种方式添加第三个卷,但是当我从 /opt
安装任何内容时,我无法启动容器。根据我指定的路径,我不断收到两条错误消息之一:cp: cannot stat '/opt/bitnami/php/etc/common.conf.disabled': No such file or directory
(尝试安装 /opt/bitnami/php/etc
时)或下面的一条(尝试安装 /opt
时):
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/opt/bitnami/scripts/moodle/entrypoint.sh": stat /opt/bitnami/scripts/moodle/entrypoint.sh: no such file or directory: unknown
services:
moodle:
platform: linux/x86_64
container_name: foo_moodle
depends_on:
- moodle_db
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
- "8443:8443"
restart: unless-stopped
environment:
- MOODLE_DATABASE_TYPE=pgsql
- MOODLE_DATABASE_HOST=moodle_db
- MOODLE_DATABASE_PORT_NUMBER=5432
- MOODLE_DATABASE_USER=${MOODLE_DB_USER}
- MOODLE_DATABASE_NAME=${MOODLE_DB_NAME}
- MOODLE_DATABASE_PASSWORD=${MOODLE_DB_PASS}
- MOODLE_SITE_NAME=${MOODLE_SITE_NAME}
volumes:
- ./moodle/mount_moodle:/bitnami/moodle
- ./moodle/mount_moodle_data:/bitnami/moodledata
如何安装
php.ini
?
我会在 Dockerfile 中修改单个配置文件,而不是使用卷挂载。挂载将替换整个目录,因此可能需要拥有许多文件的不同副本。在我正在查看的 Bitnami Moodle 图像中,php.ini 位于 /opt/bitnami/php/etc 中,其中还有许多其他文件(和目录),您将用您的卷替换所有这些文件。然后,如果您要更新正在使用的基础映像,您可能必须检查所有这些文件是否有更改。
要在 Dockerfile 中添加本地 php.ini,它看起来像这样:
FROM bitnami/moodle
COPY php.ini /opt/bitnami/php/etc/php.ini
其中 php.ini 是包含您所做更改的本地文件。
因为我无法在容器内安装文本编辑器
我在向容器添加包时也遇到了很多麻烦,因为构建映像的最佳实践通常涉及删除所有包源列表以最小化映像的大小。因此,典型的
apt-get install
命令不起作用,您需要先添加一堆源,然后更新,然后安装。仅供参考,Bitnami 容器通常有一个 install_packages
命令,因此您应该能够 install_packages vim
。您还可以在 Dockerfile 中添加文本编辑器:
FROM bitnami/moodle
COPY php.ini /opt/bitnami/php/etc/php.ini
RUN apt-get update && apt-get install -y \
vim \
&& rm -rf /var/lib/apt/lists/*