【问题标题】:Dockerfile can not find entrypoint scriptDockerfile 找不到入口点脚本
【发布时间】:2017-05-12 08:12:15
【问题描述】:

我想使用 bash 脚本作为 dockerfile 中的入口点。代码如下:

ENV INST  INIT
ADD start.sh /start.sh
RUN chmod 777 /start.sh
ENTRYPOINT /start.sh $INST

应该是对的。但是当我构建图像并运行它时,结果如下:

/bin/sh: 1: /start.sh: not found

谁能帮帮我?谢谢。 Dockerfile 总数:

FROM debian:latest

ENV INST  INIT
RUN apt-get update
RUN apt-get install -y git build-essential gcc g++ vim 


RUN mkdir /Lab-C-Framework
WORKDIR /Lab-C-Framework
ADD Lab-C-Framework /Lab-C-Framework
RUN make install
RUN chmod 777 -R /Lab-C-Framework

RUN mkdir /project
ADD bin /project
ADD src /project
ADD header /project
ADD tests /project
ADD Docs /project
ADD Makefile /project
RUN chmod 777 -R /project

ADD start.sh /start.sh
RUN chmod 777 /start.sh

RUN mkdir /code
RUN chmod 777 /code
VOLUME /code 
WORKDIR /code


ENTRYPOINT /start.sh $INST

【问题讨论】:

  • 我会将脚本添加到容器上的 /bin 目录中,并使用 start.sh 而不使用 / 作为入口点。

标签: bash docker dockerfile


【解决方案1】:

您的/start.sh 脚本中的第一行似乎指向了不存在的东西。如果是#!/bin/bash,则需要在映像中安装 bash。如果您的 shell 安装在容器中,请确保您的第一行末尾没有 windows 换行符。

【讨论】:

  • 这个,为我节省了一些时间!
【解决方案2】:

您可以尝试使用以下方法设置您的入口点:

COPY start.sh /start.sh
RUN chmod +x /start.sh
ENTRYPOINT ["/start.sh", "$INST"]

如果您可以编辑 start.sh 脚本,您可能会直接从环境中读取 $INST 变量,而无需将其作为参数传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2017-11-14
    • 1970-01-01
    • 2023-04-02
    • 2020-06-02
    • 2021-01-25
    相关资源
    最近更新 更多