Docker-compose无法读取环境变量(MYSQL_DATABASE_PASSWORD)

3
我正在尝试使用Portainer的默认Wordpress模板在Synology NAS上构建一个小型的wordpress堆栈。它明确声明了MYSQL_DATABASE_PASSWORD,但在运行时,我收到以下错误提示:“您需要指定MYSQL_ROOT_PASSWORD、MYSQL_ALLOW_EMPTY_PASSWORD和MYSQL_RANDOM_ROOT_PASSWORD之一。” 我已经尝试使用FileRun的默认docker-compose.yml文件进行相同的操作,在他们的文档中,但即使那样也会出现以上错误。我已经尝试导出任何/所有这些环境变量,但发现仍然存在相同的问题。
version: '2'

services:
  db:
    image: mariadb:10.1
    environment:
      MYSQL_ROOT_PASSWORD: your_mysql_root_password
      MYSQL_USER: your_filerun_username
      MYSQL_PASSWORD: your_filerun_password
      MYSQL_DATABASE: your_filerun_database
    volumes:
      - /filerun/db:/var/lib/mysql

  web:
    image: afian/filerun
    environment:
      FR_DB_HOST: db
      FR_DB_PORT: 3306
      FR_DB_NAME: your_filerun_database
      FR_DB_USER: your_filerun_username
      FR_DB_PASS: your_filerun_password
      APACHE_RUN_USER: www-data
      APACHE_RUN_USER_ID: 33
      APACHE_RUN_GROUP: www-data
      APACHE_RUN_GROUP_ID: 33
    depends_on:
      - db
    links:
      - db:db
    ports:
      - "80:80"
    volumes:
      - /filerun/html:/var/www/html
      - /filerun/user-files:/user-files

预期的结果应该是堆栈运行,特别是mariadb容器。实际发生的是容器反复死亡,并抛出“您需要指定MYSQL_ROOT_PASSWORD、MYSQL_ALLOW_EMPTY_PASSWORD和MYSQL_RANDOM_ROOT_PASSWORD之一”的错误提示。

我无法使用你的 docker-compose.yml 文件重现这个错误。你确定这个错误来自 db 容器吗?你尝试拉取最新的 mariadb:10.1 版本了吗? - kichik
我刚刚尝试使用filerun docker-compose,但是使用最新版本的mariadb时也出现了同样的问题,即“db”容器反复死亡。 - silentArtifact
请提供启动容器时使用的命令以及完整的带有错误的输出。这个设置是有效的,可能是你运行它的方式不对。另外,您能否发布 docker-compose config 的结果? - Mihai
2个回答

2
根据他们的文档,没有名为MYSQL_DATABASE_PASSWORD的变量。现有的变量包括:MYSQL_ROOT_PASSWORD、MYSQL_ROOT_HOST、MYSQL_DATABASE、MYSQL_USER和MYSQL_PASSWORD。或者我可能没有理解你的问题。最初的回答。

0

通过谷歌发现了这个问题。我在按照这个答案填充数据库时遇到了这个问题。

在@Siyavash提到的文档中(在“环境变量”下):

请注意,如果您使用已经包含数据库的数据目录启动容器,则以下任何变量都不会产生任何影响:任何预先存在的数据库始终会在容器启动时保持不变。

因此,我使用的用户变量需要放置在Dockerfile中,而不是docker-compose.yml中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接