如何仅通过YML文件与Dockerfile实现从宿主机编辑Docker容器内文件(无需终端)——针对PhpMyAdmin容器的问题
如何仅通过YML文件与Dockerfile实现从宿主机编辑Docker容器内文件(无需终端)——针对PhpMyAdmin容器的问题
嘿,我完全懂你的处境——没法用终端,只能靠YML和Dockerfile操作,还想直接编辑PhpMyAdmin容器里的文件对吧?你之前尝试挂载整个/var/www/html目录踩坑了,其实问题核心在于直接挂载空的宿主机目录会覆盖容器内原有的PhpMyAdmin核心文件,导致容器根本跑不起来。下面给你两个完全不用终端的解决方案,完美适配你的限制:
方案一:仅用docker-compose.yml,单个文件绑定挂载(推荐改少量文件用)
如果只是要修改个别配置文件或者特定页面,没必要动整个目录,直接挂载单个文件就够了,步骤超简单:
- 先在宿主机的
./bin/pma/phpmyadmin目录下手动创建你要修改的文件(比如config.inc.php),内容可以参考PhpMyAdmin官方默认配置(直接去官网复制就行,不用碰终端)。 - 修改你的docker-compose.yml,在volumes区域新增一行单个文件的挂载:
phpmyadmin: image: phpmyadmin/phpmyadmin restart: always expose: - 80 depends_on: - database volumes: - /sessions - ./bin/pma/php.ini:/usr/local/etc/php/conf.d/php-phpmyadmin.ini # 新增这行:宿主机文件实时同步到容器内对应路径 - ./bin/pma/phpmyadmin/config.inc.php:/var/www/html/config.inc.php extra_hosts: - "host.docker.internal:host-gateway"
这样你在宿主机编辑这个文件,容器里的对应文件会实时同步,而且完全不会影响容器内其他PhpMyAdmin的核心文件,启动后就能正常使用。
方案二:用Dockerfile构建自定义镜像(适合改多个文件/加自定义内容)
要是你需要修改一堆文件,甚至要添加自己的自定义页面,就用Dockerfile来构建专属镜像,全程不用终端操作:
- 在宿主机的
./bin/pma目录下新建一个Dockerfile,内容写:
# 基于官方PhpMyAdmin镜像构建 FROM phpmyadmin/phpmyadmin # 把宿主机phpmyadmin目录下的文件复制到容器内的应用目录 # 注意:只有同名文件会被替换,容器内原有其他核心文件会保留 COPY ./phpmyadmin/ /var/www/html/
- 调整docker-compose.yml,不再用官方镜像,改用自定义构建配置:
phpmyadmin: # 指向Dockerfile所在的目录 build: ./bin/pma restart: always expose: - 80 depends_on: - database volumes: - /sessions - ./bin/pma/php.ini:/usr/local/etc/php/conf.d/php-phpmyadmin.ini extra_hosts: - "host.docker.internal:host-gateway"
- 在宿主机的
./bin/pma/phpmyadmin目录下放进你要修改或添加的文件(比如自定义的index.php、样式表等)。启动容器时,Docker会自动帮你构建镜像,把这些文件同步到容器里,同名文件替换,其他核心文件完整保留。
小提醒
- 方案一的挂载是实时同步的,改完宿主机文件刷新浏览器就生效;方案二需要你修改文件后重新启动容器,因为镜像构建是一次性操作。
- Windows系统下路径记得用
/,别用\,避免路径解析出错。
备注:内容来源于stack exchange,提问作者Francisco IA Lover
相关产品推荐
相关产品推荐

