Dockerfile在运行bash脚本时抛出错误

Dockerfile在运行bash脚本时抛出错误,bash,docker,jenkins,docker-compose,devops,Bash,Docker,Jenkins,Docker Compose,Devops,我有一个Dockerfile,如下所示: #1st stage - wildfly production image FROM wildfly-setup:17.0.0 AS wildfly-prod USER jenkins RUN mkdir /opt/wildfly/install && mkdir /opt/wildfly/install/config COPY --chown=jenkins:jenkins init.sh /opt/wildfly/bin RUN mk

我有一个Dockerfile,如下所示:

#1st stage - wildfly production image
FROM wildfly-setup:17.0.0 AS wildfly-prod
USER jenkins
RUN mkdir /opt/wildfly/install && mkdir /opt/wildfly/install/config
COPY --chown=jenkins:jenkins init.sh /opt/wildfly/bin
RUN mkdir -p $JBOSS_HOME/standalone/data/datastorage
#Second stage - test run image
FROM wildfly-prod AS wildfly-sedi-test
USER jenkins
COPY --chown=jenkins:jenkins init.sh /opt/wildfly/bin
RUN /opt/wildfly/bin/init.sh
#CMD ["/opt/wildfly/bin/init.sh"]
我在上面的Dockerfile中运行的bash脚本如下所示:

#1st stage - wildfly production image
FROM wildfly-setup:17.0.0 AS wildfly-prod
USER jenkins
RUN mkdir /opt/wildfly/install && mkdir /opt/wildfly/install/config
COPY --chown=jenkins:jenkins init.sh /opt/wildfly/bin
RUN mkdir -p $JBOSS_HOME/standalone/data/datastorage
#Second stage - test run image
FROM wildfly-prod AS wildfly-sedi-test
USER jenkins
COPY --chown=jenkins:jenkins init.sh /opt/wildfly/bin
RUN /opt/wildfly/bin/init.sh
#CMD ["/opt/wildfly/bin/init.sh"]
#/bin/bash
如果[-e“$JBOSS_HOME/install/wildfly.sh”];然后
$JBOSS_HOME/install/wildfly.sh
rm$JBOSS_HOME/install/wildfly.sh
fi
#检查postgres是否正在运行
cnt=0
psql_终止=2
而($cnt<120&$psql_terminate!=0);做
postgres\u已就绪-h$postgres>/dev/null 2>&1
如果[$?-等式0];然后
让psql_终止=0
echo$psql_终止
fi
设cnt=cnt+1
睡眠1
完成
如果($psql_terminate==0));然后
exec$JBOSS_HOME/bin/standalone.sh-c standalone-full.xml
其他的
echo“数据库不可用”
出口1
fi
在Dockerfile中,当我无法使用CMD命令时,它可以工作,但使用RUN命令时,它会在生成图像时抛出以下错误:

命令'/bin/sh-c/opt/wildfly/bin/init.sh'返回一个非零代码:1

谁能帮我一下吗

提前感谢。

将在构建图像时执行bash脚本

RUN指令将在新图层上执行任何命令 当前图像的顶部并提交结果。结果 提交的映像将用于Dockerfile中的下一步

将在启动容器时执行bash脚本

CMD的主要目的是为正在执行的容器提供默认值。这些默认值可以包括可执行文件,也可以省略可执行文件,在这种情况下,您还必须指定入口点指令


因此,我假设您的脚本到达
退出1
,因为它应该在容器启动时运行,而不是在构建图像时运行。

使用
#/bin/bash-x
,并尝试重新生成。它应该提供关于什么中断的更多信息,并且,您有一个带有消息“database unavailable”(数据库不可用)的
exit 1
。你看到那条消息了吗?运行此命令时,似乎数据库中的某些内容未处于活动状态,或者无法访问它。然而,我无能为力。祝你好运