Я пытаюсь создать докер с проектом Rails:
Вот мой докер-файл:
FROM ruby:3.1.2-slim
RUN apt-get update -qq && apt-get install -yq --no-install-recommends \
build-essential \
gnupg2 \
less \
git \
libpq-dev \
postgresql-client \
libvips42 \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
ENV LANG=C.UTF-8 \
BUNDLE_JOBS=4 \
BUNDLE_RETRY=3
RUN gem update --system && gem install bundler
WORKDIR /usr/src/app
ENTRYPOINT ["sh", "./entrypoint.sh"]
EXPOSE 3001
CMD ["bundle", "exec", "rails", "s", "-b", "0.0.0.0"]
И вот моя точка входа.sh
#!/bin/bash
set -e
# Remove a potentially pre-existing server.pid for Rails.
rm -f /usr/src/app/tmp/pids/server.pid
echo "bundle install..."
bundle check || bundle install --jobs 4
# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
Я также добавил права доступа
-rwxr-xr-x 1 vitat staff 274 22 Mar 16:02 entrypoint.sh
Когда я запускаю: docker-compose up -d, я получаю эту ошибку:
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./entrypoint.sh": stat ./entrypoint.sh: no such file or directory: unknown
Что я делаю не так?





Как указано в ошибке, Docker не может найти entrypoint.sh по пути ./entrypoint.sh при попытке запустить контейнер. Наиболее вероятная причина заключается в том, что сценарий entrypoint.sh находится не там, где его ожидает Docker, когда выполняется инструкция ENTRYPOINT.
Поэтому убедитесь, что он находится в том же каталоге, что и ваш Dockerfile, и включен в ваш образ Docker. Попробуйте внести следующие изменения в свой Dockerfile:
WORKDIR /usr/src/app
# Copy the entrypoint script into the container at /usr/src/app
COPY entrypoint.sh /usr/src/app/
RUN chmod +x /usr/src/app/entrypoint.sh
ENTRYPOINT ["sh", "./entrypoint.sh"]
Обязательно пересоберите образ Docker с помощью docker-compose build после внесения этих изменений, прежде чем снова запускать docker-compose up -d.