docker compose 中卷未定义的问题

ser*_*rah 2 docker docker-compose

当我运行 docker-compose up 时出现以下错误,请指出为什么我收到此错误

服务“mysqldb-docker”引用未定义的卷 mysqldb:无效的撰写项目

另外,有没有办法将 CLI 中的 $ENV 值传递给 docker-compose up ,目前我有一个 ENV 变量指定 dev、uat 或 prod,我用它来指定数据库名称。除了为此明确创建 .env 文件之外,还有更好的替代方法吗

 version: '3.8'
    services:
      mysqldb-docker:
        image: '8.0.27'
        restart: 'unless-stopped'
        ports:
          - "3309:3306"
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - MYSQL_PASSWORD=root
          - MYSQL_DATABASE=reco-tracker-$ENV
        volumes:
          - mysqldb:/var/lib/mysql
      reco-tracker-docker:
        image: 'reco-tracker-docker:v1'
        ports:
          - "8083:8083"
        environment:
          - SPRING_DATASOURCE_USERNAME=root
          - SPRING_DATASOURCE_PASSWORD=root
          - SPRING_DATASOURCE_URL="jdbc:mysql://mysqldb-docker:3309/reco-tracker-$ENV"
        depends_on: [mysqldb-docker]
Run Code Online (Sandbox Code Playgroud)

And*_*sby 12

您必须volumes在顶层定义如下:

version: '3.8'

services:
  mysqldb-docker:
    # ...
    volumes:
      - mysqldb:/var/lib/mysql

volumes:
  mysqldb:
Run Code Online (Sandbox Code Playgroud)