在Docker容器中重命名文件

8

当我在红帽机器上尝试在Docker容器中运行简单脚本时,遇到了奇怪的错误,以下是Docker文件:

From tomcat:7.0.70-jre7
ENV CLIENTNAME geocontact
ADD tomcat-users.xml /usr/local/tomcat/conf/
ADD app.war /usr/local/tomcat/webapps/
COPY app.sh /

ENTRYPOINT ["/app.sh"]

的意思是指定容器启动后执行的命令为 /app.sh 脚本。

而 app.sh 脚本在 Redhat 系统上出现了问题。

#!/bin/bash
set -e
mv /usr/local/tomcat/webapps/app.war /usr/local/tomcat/webapps/client1.war
catalina.sh run

错误信息:

mv 无法将 '/usr/local/tomcat/webapps/app.war' 移动到自身的子目录 '/usr/local/tomcat/webapps/client1.war'

错误截图,只在 Redhat 上出现,我在 Ubuntu 和 CentOS 上运行相同的镜像没有遇到问题。


4
最好将错误信息复制粘贴到您的文章中,而不是重新输入它们。否则,很难确定我们是否正在查看真正的问题。 - Oliver Charlesworth
@OliverCharlesworth 我放了一个输出的截图,希望这能帮到你。 - Amine
你能显示 ls -al /usr/local/tomcat/webapps/ 吗? - AstraSerg
@AstraSerg,问题在于容器因为这个错误而崩溃,所以我无法附加容器来运行命令。 - Amine
@Amine 只需在 app.sh 中添加此命令即可。 - AstraSerg
3个回答

18
在你的Dockerfile中: ADD fileA fileB。这将在镜像创建时重命名fileAfileB

10

你可以将命令分成两个部分:

cp /usr/local/tomcat/webapps/app.war /usr/local/tomcat/webapps/client1.war
rm /usr/local/tomcat/webapps/app.war

-3

您可以在容器内编辑文件并提交更改,而无需构建镜像。

docker commit existing_containername commited_image_name

然后使用新的容器运行,例如:

docker run --name tomcat -td commited_image_name


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接