Docker抱怨奇怪的端口规范

  • 本文关键字:Docker docker
  • 更新时间 :
  • 英文 :


我正在使用https://www.iops.tech/blog/postfix-in-alpine-docker-container/创建一个alpine后缀容器。我觉得它还不到一年,应该不错。我设置它,唯一的区别是它是在docker-compose中完成的,而不是直接在容器中完成的。我确实测试了它写在博客(直接运行docker),它似乎工作。但是当我使用这些配置做dc up -d postfix时:

postfix:
build:
context: ./docker/postfix
container_name: postfix
ports:
- 8025:25
environment:
- POSTFIX_SMTP_HELO_NAME=localhost
- POSTFIX_MYORIGIN=localhost
- POSTFIX_MYHOSTNAME=localhost

我得到for postfix Cannot create container for service postfix: invalid port specification: "481525"

更改端口规范,将端口用引号括起来

ports:
- "8025:25"

HOST:CONTAINER格式映射端口时,使用小于60的容器端口可能会出现错误结果,因为YAML将xx:yy格式的数字解析为base-60值。因此,我们建议始终显式地将端口映射指定为字符串。

https://docs.docker.com/compose/compose-file/compose-file-v3/short-syntax-1

我建议总是把文字值用引号括起来,为了显式和一致,尽量避免这些陷阱。

<<h3>完全转换/h3>这是文章

中的命令
docker run 
-d 
--rm 
--init 
--env POSTFIX_SMTP_HELO_NAME=localhost 
--env=POSTFIX_MYORIGIN=localhost 
--env=POSTFIX_MYHOSTNAME=localhost 
--name postfix-alpine 
-p 8025:25 
postfix-alpine:latest

我会把它翻译成这样的docker-compose.yml:

(我还没有测试过)

version: "3.9"
services:
postfix:
image: postfix-alpine:latest
container_name: postfix-alpine
build:
context: "./docker/postfix"
ports:
- "8025:25"
environment:
POSTFIX_SMTP_HELO_NAME: "localhost"
POSTFIX_MYORIGIN: "localhost"
POSTFIX_MYHOSTNAME: "localhost"

最新更新