我正在使用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"