Dockerfile 找不到入口点脚本



我想使用 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

谁能帮我?谢谢。总文件:

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
看起来

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

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

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

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

最新更新