docker - 在 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 用户编写的。只要此错误仍然存在,服务器就会不断重新启动并且不会保持在线状态。
解决方案
- 将您的入口点放在
/
路径上。似乎您正在使用WORKDIR
导致此冲突的某个地方。 - 在这种情况下,更喜欢使用
COPY
而不是。ADD
- 为您的入口点脚本提供可执行权限。
这是它最后的样子 -
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]