файл входа не найден в контейнере Docker - PullRequest
0 голосов
/ 02 мая 2019

У меня есть проект docker-compose, состоящий из пяти док-контейнеров, три из которых используют файл entrypoint.sh. Ни один из этих трех не может найти файл entrypoint.sh после сборки.

Я пробовал несколько вариантов синтаксиса, но я очень плохо знаком с докером и не узнал бы синтаксическую ошибку, если бы смотрел прямо на нее. Процесс сборки для каждого завершается без ошибок, но когда я пытаюсь перевести их в оперативный режим, они не могут найти файл точки входа и постоянно перезагружаются в цикле.

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

и ошибка

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

Стоит отметить, что я использую Docker для Windows, и эти файлы Docker были написаны пользователем Mac. Пока эта ошибка сохраняется, серверы постоянно перезагружаются и не остаются в сети.

Ответы [ 2 ]

1 голос
/ 02 мая 2019
  1. Поместите вашу точку входа в / путь.Похоже, вы используете WORKDIR где-то, что вызывает этот конфликт.
  2. В этом случае предпочтительнее использовать COPY вместо ADD.
  3. Предоставьте исполняемые разрешения для вашего сценария точки входа.

Вот как это может выглядеть в конце -

COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
0 голосов
/ 02 мая 2019

Вы добавляете entrypoint.sh в корневую папку как «/».

ADD entrypoint.sh /

Но вы все равно вызываете entrypoint.sh on ./ в качестве папки рабочего каталога.

ENTRYPOINT ./entrypoint.sh

Вы пытаетесь:

ENTRYPOINT /entrypoint.sh

или:

ADD entrypoint.sh ./

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...