ejabberd/mix借助此镜像,您可以使用Docker镜像中提供的依赖构建ejabberd,无需在本地机器上直接安装构建软件(除Docker外)。
请注意,此镜像可能无需修改即可用于构建其他Erlang或Elixir软件。
您可以使用以下命令从源码构建ejabberd及其所有依赖:
bashgit clone [***] cd ejabberd docker run --rm -v $(pwd):$(pwd) -w $(pwd) ejabberd/mix do deps.get, deps.compile, compile
如果您未安装Git,也可以执行以下操作:
bashwget [***] unzip master.zip cd ejabberd-master docker run --rm -v $(pwd):$(pwd) -w $(pwd) ejabberd/mix do deps.get, deps.compile, compile
您可以通过编辑config/ejabberd.yml文件来自定义配置。默认情况下,您可以在"localhost"域上运行ejabberd并附加控制台:
bashdocker run --rm -it -p 5222:5222 -p 5280:5280 -v $(pwd):$(pwd) -w $(pwd) --entrypoint="/usr/bin/iex" ejabberd/mix -S mix
然后,您可以从Elixir shell创建用户:
bashErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:2:2] [async-threads:10] [kernel-poll:false] Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> :ejabberd_auth.try_register("test", "localhost", "passw0rd") {:atomic, :ok}
之后,您可以使用用户test@localhost(密码:passw0rd)连接到本地主机的5222端口的服务器,使用XMPP客户端进行连接。
如果您想运行Erlang命令行,可以通过在容器内打开shell来实现:
bashdocker run -it -v $(pwd):$(pwd) -w $(pwd) --entrypoint="/bin/sh" ejabberd/mix
bashdocker run -it --rm -v $(pwd):$(pwd) -w $(pwd) ejabberd/mix --version Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:2:2] [async-threads:10] [kernel-poll:false] Mix 1.3.4
如果您只是想使用此镜像,则无需构建它。您可以直接使用ejabberd Docker Hub上的镜像。
bashdocker build -t ejabberd/mix .
如果您收到有关文件时间戳不同步的警告(如“检测到时钟偏差”),您可能需要在运行构建之前强制同步时钟。MacOS上的Docker在笔记本电脑休眠后不会强制同步Docker的时钟。
您可以通过以下命令强制时钟同步:
bashdocker run -it --rm --privileged --entrypoint="/sbin/hwclock" ejabberd/mix -s
您可以通过以下命令检查您的笔记本电脑时钟是否与Docker内部的时钟同步:
bashdocker run --rm --entrypoint="/bin/sh" ejabberd/mix -c date -u && date -u
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务