我需要发布一个包含https://aerokube.com/selenoid的Dockerfile。
这必须是一个Dockerfile,这样我就可以将其发布到我们的容器注册表,该注册表将作为管道/文本执行https://learn.microsoft.com/en-us/azure/devops/pipelines/process/service-containers?view=azure-devops&tabs=yaml的一部分用作服务容器
这是我的dockerfile
FROM alpine:3.14
# Update Package
RUN apk update
# Install Selenoid Configuration Manager
RUN wget -O /usr/bin/cm https://github.com/aerokube/cm/releases/download/1.8.5/cm_linux_amd64 \
&& chmod +x /usr/bin/cm
# create dir
RUN mkdir -p /etc/selenoid
# Copy browsers.json
COPY browsers.json /etc/selenoid/browsers.json
EXPOSE 4444
CMD["/usr/bin/cm", "-conf", "/etc/selenoid/browsers.json"]
字符串
我的browsers.json文件与Dockerfile位于同一个目录。
在我的本地测试中,当我尝试运行容器时,
Error: unknown command "/etc/selenoid/browsers.json" for "cm"
Run 'cm --help' for usage.
型
我还尝试将命令更新为
CMD ["/usr/bin/cm", "selenoid","start", "-conf", "/etc/selenoid/browsers.json"]
型
但错误更疯狂
Failed to initialize: [can not access Docker: make sure you have Docker installed and current user has access permissions]
型
将CMD更改为ENTRYPOINT的结果相同
3条答案
按热度按时间nue99wik1#
不确定它是否拼写错误,但您在原始dockerfile中缺少空间。
字符串
应该是:
型
kh212irz2#
错误
unknown command "/etc/selenoid/browsers.json" for "cm"
表明Dockerfile中的命令语法存在问题。无法正确识别命令参数。确保CMD指令被正确格式化为JSON数组。
字符串
错误消息
can not access Docker: make sure you have Docker installed and current user has access permissions
表示Selenoid服务无法访问Docker。尝试在容器中挂载Docker套接字。这可以通过在运行Docker容器时添加volume mount来完成。
型
最后,当您希望容器作为可执行文件运行时,建议使用
ENTRYPOINT
而不是CMD
。修改后的Dockerfile将是:
型
sdnqo3pr3#
你在做奇怪的事情。CM工具从来没有被期望在容器中发布。这就像一个
setup.exe
快速安装Selenoid。如何构建Docker镜像在这个文档部分中描述:https://aerokube.com/selenoid/latest/#_contributing_development简单地复制browsers.json
作为/etc/selenoid/browsers.json
后,从文档中执行步骤,并提供此路径到/usr/bin/selenoid
命令使用-conf
标志。原始Dockerfile是在这里发表:https://github.com/aerokube/selenoid/blob/master/Dockerfile