Docker Compose运行报错:环境变量类型无效问题求助
解决Docker Compose配置文件无效的问题
嘿,这个报错很典型——你的login-service里的environment字段格式写错啦!Docker Compose 3规范里,environment不接受你用的那种{"REDIS_HOST": "redis-server"}对象格式,它要求要么是**KEY=VALUE格式的字符串数组**,要么是直接的YAML键值对。
错误原因拆解
报错信息里明确说:services.login-service.environment contains {"REDIS_HOST": "redis-server"}, which is an invalid type, it should be a string,意思就是你把环境变量写成了一个JSON对象,但Compose期望的是符合规范的字符串结构。
两种正确的写法
写法一:字符串数组(推荐,跨版本兼容性更好)
environment: - REDIS_HOST=redis-server
写法二:YAML键值对
environment: REDIS_HOST: redis-server
修正后的完整docker-compose.yml文件
另外我注意到你的配置里login-service的networks字段最后写的是my-netw...,应该是拼写错误,我一起帮你修正了:
version: '3' services: redis: image: redis ports: - 6379:6379 networks: - my-network login-service: tty: true build: . volumes: - ./:/usr/src/app ports: - 3001:3001 depends_on: - redis environment: # 这里用了推荐的数组写法,你也可以换成键值对写法 - REDIS_HOST=redis-server networks: - my-network networks: my-network: driver: bridge
验证方法
修改完之后,你可以先运行这个命令检查配置文件是否合法:
docker-compose config
如果没有报错,就可以正常启动服务啦:
docker-compose up -d
内容的提问来源于stack exchange,提问作者Christofer Johnson
相关产品推荐
相关产品推荐

