Docker Rails Entrypoint.sh 失败

问题描述 投票:0回答:1

我正在尝试创建一个带有rails项目的docker:

这是我的 dockerfile:

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

我做错了什么?

ruby-on-rails bash docker
1个回答
0
投票

正如错误所示,当尝试启动容器时,Docker 无法在路径

entrypoint.sh
处找到
./entrypoint.sh
。最可能的原因是执行
entrypoint.sh
指令时,
ENTRYPOINT
脚本不在 Docker 预期的位置。

因此请确保它与 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-compose build
重建 Docker 映像,然后再次运行
docker-compose up -d

© www.soinside.com 2019 - 2024. All rights reserved.