在Docker容器中找不到入口文件

时间:2019-05-02 02:45:10

标签: docker docker-compose

我有一个由五个docker容器组成的docker-compose项目,其中三个使用entrypoint.sh文件。这三个文件在构建后都无法找到entrypoint.sh文件。

我已经尝试了几种语法变体,但是我对docker还是很陌生,如果我盯着它,不会知道语法错误。每个文件的构建过程均已完成,没有错误,但是当我尝试使它们联机时,它们找不到入口点文件,并且不断循环重启。

一个这样的Dockerfile

(a bunch of confidential stuff I cant post here)
# Enable apache modules
RUN sudo a2enmod actions headers  alias deflate mime expires filter setenvif include rewrite
# Create a log file
RUN mkdir /var/www/logs
RUN chmod -R 777 /var/www/logs
#Open up needed ports
EXPOSE 8081
EXPOSE 80
ADD entrypoint.sh /

ENTRYPOINT ./entrypoint.sh

aa和错误

ss-fe-webserver | /bin/sh: 1: ./entrypoint.sh: not found

值得注意的是,我正在运行Windows的Docker,这些Dockerfile是由Mac用户编写的。只要此错误持续存在,服务器就会不断重启,并且不会保持联机状态。

2 个答案:

答案 0 :(得分:1)

  1. 将入口点放在/路径中。看来您正在WORKDIR所用的地方导致此冲突。
  2. 在这种情况下,最好使用COPY而不是ADD
  3. 为入口点脚本提供可执行权限。

这是最后的样子-

COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

答案 1 :(得分:0)

您将根目录下的entrypoint.sh添加为“ /”。

ADD entrypoint.sh /

但是您仍然将./上的entrypoint.sh称为workdir文件夹。

ENTRYPOINT ./entrypoint.sh

您尝试:

ENTRYPOINT /entrypoint.sh

或:

ADD entrypoint.sh ./