問題背景
使用docker-compose搭建基於gogs+MySQL的個人git倉庫,在映射2222:22
端口的時候,報如下錯誤:
# ./docker-compose up -d
Creating network "gogs_default" with the default driver
Creating gogs_mysql_1 ... done
Creating gogs_gogs_1 ... error
ERROR: for gogs_gogs_1 Cannot create container for service gogs: invalid port specification: "133342"
ERROR: for gogs Cannot create container for service gogs: invalid port specification: "133342"
ERROR: Encountered errors while bringing up the project.
其中docker-compose.yml
部分配置如下:
services:
gogs:
ports:
- 2222:22
問題原因
YAML 支持所謂的“以60為底的浮點數”,對時間計算很有用。因此2222:22
被解釋為2222 * 60 + 22
,即133342。如果port包含大於60的數字,例如3306:3306
或8080:80
,就沒有問題,因此不會總是發生此問題,從而使其隱蔽。
問題解決
使用雙引號即可,如下:
services:
gogs:
ports:
- "2222:22"