目前,我的Dockerfile的工作方式如下所示,但目前我必须运行这两行注释行,以便将应用程序提取、编译和部署到服务器上。我尝试创建一个shell脚本来使用ADD和ENTRYPOINT运行这些命令,但是当我运行(使用下面的docker命令)时,shell脚本运行,然后容器退出。
我应该修改什么/如何修改(假设是对接者运行命令)来修复这个问题?
是否有比RPM的多个URLS更容易导入库的方法?我试着用百胜,但我不知道如何设置我的回购安装任何东西。
Dockerfile
FROM registry.access.redhat.com/jboss-eap-7/eap71-openshift
USER root
RUN rpm -i [the URLS of the 40 libraries I need for SVN]
ADD subversion_installer_1.14.1.sh /home/svn_installer.sh
RUN yes | /home/svn_installer.sh
USER jboss
ARG REPO_USER
ARG REPO_PW
ARG REPO_URL
ENV REPO_USER=$REPO_USER
ENV REPO_PW=$REPO_PW
ENV REPO_URL=$REPO_URL
#RUN svn export --username="$REPO_USER" --password="$REPO_PW" "$REPO_URL" /usr/svn/myapp
#RUN /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/bin/jar -cvf $JBOSS_HOME/standalone/deployments/myapp.war /usr/svn/myapp码头命令
docker build . -t myapp:latest
docker run -d -p 8080:8080 -p 9990:9990 --env-file=svnvars.cfg myapp:latest发布于 2021-12-18 00:46:11
发现我做错了什么。我试着用
/opt/eap/bin/standalone.sh作为入口点脚本中的最后一个命令。
我打电话发现这是不对的
docker images inspect myapp:latest在那里我找到了
"Cmd": [
"/opt/eap/bin/openshift-launch.sh"
],我打错命令了。因此,我通过替换shell脚本中的命令并将入口点更改为CMD来修复这个问题。
以下是更正后的文件:
Dockerfile
FROM registry.access.redhat.com/jboss-eap-7/eap71-openshift
USER root
RUN rpm -i [too many libraries]
ADD subversion_installer_1.14.1.sh /home/svn_installer.sh
ADD svnvars.cfg /var/svn/svnvars.cfg
RUN yes | /home/svn_installer.sh
USER jboss
ARG REPO_USER
ARG REPO_PW
ARG REPO_URL
ENV REPO_USER=$REPO_USER
ENV REPO_PW=$REPO_PW
ENV REPO_URL=$REPO_URL
ADD entrypoint.sh /home/entrypoint.sh
CMD /home/entrypoint.shentrypoint.sh
#!/bin/bash
svn export --username="$REPO_USER" --password="$REPO_PW" "$REPO_URL" /usr/svn/myapp
cd /usr/svn/myapp
ant war
/opt/eap/bin/openshift-launch.shhttps://stackoverflow.com/questions/70387677
复制相似问题