首页 > 解决方案 > 在 Docker 容器中找不到入口文件

问题描述

我有一个 docker-compose 项目,由五个 docker 容器组成,其中三个使用 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 用户编写的。只要此错误仍然存​​在,服务器就会不断重新启动并且不会保持在线状态。

标签: dockerdocker-compose

解决方案


  1. 将您的入口点放在/路径上。似乎您正在使用WORKDIR导致此冲突的某个地方。
  2. 在这种情况下,更喜欢使用COPY而不是。ADD
  3. 为您的入口点脚本提供可执行权限。

这是它最后的样子 -

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

推荐阅读