【问题标题】:Unknown Instruction ln Docker File in RUNRUN中的未知指令ln Docker文件
【发布时间】:2018-03-05 03:37:18
【问题描述】:

嗨,这是我的 Docker 文件。安装 Maven 时出现错误,无法找到“ln -s”软链接命令。请帮帮我。

# We first will give the base image details for the tag "FROM" OS:Version
FROM centos:latest
#who will maintain the image 
MAINTAINER XYZ <XYZ@gmail.com>


RUN yum install -y httpd curl sed grep egrep fgrep wget git net-tools zip unzip which source openssh-server

#JAVA INSTALLATION
ADD http://www.mediafire.com/file/177sevky311fbdh/jdk-8u144-linux-x64.rpm / 
RUN rpm -ivh jdk-8u144-linux-x64.rpm 
ENV JAVA_HOME="/usr/java/jdk1.8.0_144"  
ENV JRE_HOME="/usr/java/jdk1.8.0_144/jre"

#MAVEN INSTALLATION
ADD https://www.mediafire.com/folder/6b0t6el85gtof/maven /
RUN mv /maven /opt/maven
    ln -s /opt/maven/bin/mvn /usr/bin/mvn && \
    wget http://www.mediafire.com/file/gpg2arhygj0a0wy/maven.sh && \
    mv /maven.sh /etc/profile.d && \
    chmod 755 /etc/profile.d/maven.sh


RUN cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original && \
    chmod a-w /etc/ssh/sshd_config.original && \
    mkdir /var/run/sshd && \
    echo 'root:screencast' | chpasswd && \
    sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config

CMD ["/usr/sbin/sshd, "-D"]
EXPOSE 22 

【问题讨论】:

    标签: docker dockerfile docker-build


    【解决方案1】:

    您需要添加一个&amp;&amp;\ 以将RUN 命令链接在一起

    否则 Dockerfile 将无法将 ln 解释为 Dockerfile command(如 RUNCOPYADD、...)

    RUN mv /maven /opt/maven &&\    <============== missing
        ln -s /opt/maven/bin/mvn /usr/bin/mvn && \
    

    或者至少添加第二次运行

    RUN mv /maven /opt/maven 
    RUN ln -s /opt/maven/bin/mvn /usr/bin/mvn && \
     ^  ...
     |
     --- missing
    

    【讨论】:

    • 谢谢你刚刚想通了我也想知道我们如何运行这个命令“source source /etc/profile.d/maven.sh”
    • @PavanYalamanchili “源代码”?通常,一个来源就足够了。
    • 同样的 && \ 问题对我有用,谢谢。愚蠢的我把它放在下一行。谢谢你的帮助!!
    猜你喜欢
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2021-05-10
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    相关资源
    最近更新 更多