docker compose 中的问题未定义
Issue in docker compose with volume undefined
当我 运行 docker-compose up 时,我收到以下错误,关于我收到此错误的原因的任何指示
service "mysqldb-docker" refers to undefined volume mysqldb: invalid compose project
此外,有没有办法将 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]
您必须像这样在顶层定义 volumes
:
version: '3.8'
services:
mysqldb-docker:
# ...
volumes:
- mysqldb:/var/lib/mysql
volumes:
mysqldb:
您可以将环境变量从 shell 直接传递到具有“环境”键的服务容器,而不是给它们赋值
https://docs.docker.com/compose/environment-variables/#pass-environment-variables-to-containers
web:
environment:
- ENV
但是根据我的测试,您不能在撰写文件中写入 $ENV 并期望它读取您的环境
为此你需要调用 docker-compose :
docker-compose run -e ENV web python console.py
当我 运行 docker-compose up 时,我收到以下错误,关于我收到此错误的原因的任何指示
service "mysqldb-docker" refers to undefined volume mysqldb: invalid compose project
此外,有没有办法将 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]
您必须像这样在顶层定义 volumes
:
version: '3.8'
services:
mysqldb-docker:
# ...
volumes:
- mysqldb:/var/lib/mysql
volumes:
mysqldb:
您可以将环境变量从 shell 直接传递到具有“环境”键的服务容器,而不是给它们赋值
https://docs.docker.com/compose/environment-variables/#pass-environment-variables-to-containers
web:
environment:
- ENV
但是根据我的测试,您不能在撰写文件中写入 $ENV 并期望它读取您的环境
为此你需要调用 docker-compose :
docker-compose run -e ENV web python console.py