同版本Docker环境下docker-compose仅单台生效的问题求助
解决Docker Compose PORT变量未设置的报错问题
环境信息
- 设备:台式机、笔记本,均运行最新版Kubuntu LTS系统
- Docker版本:20.10.24(build 297e128)
- docker-compose版本:v2.17.2
问题背景
项目在台式机开发正常,克隆到笔记本后启动Docker服务时报错,同步两台设备的Docker、docker-compose版本后问题依旧。
报错信息
WARN[0000] The "PORT" variable is not set. Defaulting to a blank string. WARN[0000] The "PORT" variable is not set. Defaulting to a blank string. 1 error(s) decoding: * error decoding 'Ports': No port specified: :<empty>
问题原因
docker-compose.yml中adonis_app服务的端口配置使用了${PORT}:${PORT}变量,但笔记本项目目录中缺少定义该变量的.env文件——台式机上的.env通常会被.gitignore忽略,克隆代码时不会同步到笔记本。
解决方案
1. 创建/配置.env文件
在项目根目录新建.env文件,添加PORT变量定义(端口可根据需求调整,示例用3333):
PORT=3333 # 项目所需其他环境变量可一并在此添加
确保.env文件与docker-compose.yml处于同一目录层级。
2. 验证配置(可选)
运行以下命令检查变量是否正确加载:
docker-compose config
若输出无报错,说明配置正常。
3. 给PORT设置默认值(可选,增强容错性)
修改docker-compose.yml中adonis_app的ports配置,添加默认端口值,这样即使.env未配置PORT,也会自动使用默认值启动:
ports: - ${PORT:-3333}:${PORT:-3333} - 9229:9229
完成以上操作后,重新运行docker-compose up即可正常启动服务,实现台式机和笔记本的跨设备开发。
内容的提问来源于stack exchange,提问作者George Bora
相关产品推荐
相关产品推荐

