如何延迟绑定挂载直至Docker Compose卷完成初始填充?
解决Bitnami WordPress容器首次启动绑定主题目录导致初始化失败的问题
我基于Bitnami WordPress容器镜像编写了如下Compose文件:
version: '2' services: mariadb: image: docker.io/bitnami/mariadb:10.11.2 volumes: - 'mariadb_data:/bitnami/mariadb' environment: - ALLOW_EMPTY_PASSWORD=yes - MARIADB_USER=bn_wordpress - MARIADB_DATABASE=bitnami_wordpress wordpress: image: docker.io/bitnami/wordpress:6.2.0-debian-11-r14 ports: - '80:8080' - '443:8443' volumes: - 'wordpress_data:/bitnami/wordpress' - './:/bitnami/wordpress/wp-content/themes/my-theme' depends_on: - mariadb environment: - ALLOW_EMPTY_PASSWORD=yes - WORDPRESS_DATABASE_HOST=mariadb - WORDPRESS_DATABASE_PORT_NUMBER=3306 - WORDPRESS_DATABASE_USER=bn_wordpress - WORDPRESS_DATABASE_NAME=bitnami_wordpress volumes: mariadb_data: driver: local wordpress_data: driver: local
我的需求是将本地项目目录挂载到容器内的/bitnami/wordpress/wp-content/themes/my-theme,让WordPress直接使用我的项目作为主题。但首次运行docker-compose up时出现了问题:
根据Docker卷的文档说明,新建卷时容器对应目录的文件会被复制到卷中,这正是我需要的WordPress系统文件初始化方式。但首次启动时,因为绑定挂载指向了卷内的子目录,导致卷被判定为非空,Docker就不会复制容器内的文件,最终报错:
my-project-wordpress-1 | Error: 'wp-config.php' not found. my-project-wordpress-1 | Either create one manually or use `wp config create`. my-project-wordpress-1 exited with code 1
注释掉绑定挂载的那一行后,容器可以正常初始化,但这样就无法关联我的项目目录;等初始化完成后再取消注释绑定挂载,容器就能正常运行,但这个手动步骤对其他用户来说不够友好。我试过用depends_on配置初始化容器、设置外部卷、拆分Compose配置等方法,效果都不理想,请问有没有更优的解决方案?
内容的提问来源于stack exchange,提问作者dodov
相关产品推荐
相关产品推荐

