路径“/app/include/engine”不存在。 (捆绑器::路径错误)
The path `/app/include/engine` does not exist. (Bundler::PathError)
我正在 docker使用可安装引擎调整我的 rails 应用程序。但是在 运行 图像 The path `/app/include/engine` does not exist
.
时,我经常遇到一个错误
镜像构建成功,但是 运行 docker-compose up
抛出路径错误。
下面是我的 Dockerfile
和 docker-compose.yml
Docker 文件
FROM ruby:2.4.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /app
WORKDIR /app
ADD Gemfile /app/Gemfile
ADD Gemfile.lock /app/Gemfile.lock
COPY . .
RUN mkdir -p /app/include/engine
RUN git clone git@github.com:engine/engine.git /app/include/engine
RUN ls
RUN ls /app/include/engine
RUN DISABLE_SSL=true gem install puma -v 3.6.0
RUN bundle check || bundle install
CMD ["rails", "server", "-b", "0.0.0.0"]
docker-compose.yml
version: '2'
services:
db:
image: mysql:8.0.21
restart: always
environment:
MYSQL_ROOT_PASSWORD: root@123
MYSQL_DATABASE: prod
MYSQL_USER: root
MYSQL_PASSWORD: root@123
ports:
- "3307:3306"
app:
build:
context: .
dockerfile: Dockerfile
args:
SSH_PRIVATE_KEY: ${SSH_PRIVATE_KEY}
volumes:
- ".:/app"
ports:
- "3000:3000"
depends_on:
- db
environment:
key: value
我还在 Gemfile
中包含了我的引擎路径,并遵循了安装引擎的所有步骤
# engine
gem 'api', path: 'include/engine'
它在本地环境中工作正常,但在 docker 中给我一个错误。
有人可以帮助我找到什么地方吗?
因为这条线
volumes:
- ".:/app"
当开始覆盖图像中已有的现有数据时,这会将您的本地目录安装在容器中。这意味着 /app
中的所有内容都将替换为来自您本地计算机的数据,包括您的引擎 /app/include/engine
。
要解决此问题,您需要将此引擎克隆到本地文件夹中,以便在启动容器时可用。另一种选择是在 /app
之外克隆引擎,例如在 /tmp
或任何你喜欢的地方。
我正在 docker使用可安装引擎调整我的 rails 应用程序。但是在 运行 图像 The path `/app/include/engine` does not exist
.
镜像构建成功,但是 运行 docker-compose up
抛出路径错误。
下面是我的 Dockerfile
和 docker-compose.yml
Docker 文件
FROM ruby:2.4.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /app
WORKDIR /app
ADD Gemfile /app/Gemfile
ADD Gemfile.lock /app/Gemfile.lock
COPY . .
RUN mkdir -p /app/include/engine
RUN git clone git@github.com:engine/engine.git /app/include/engine
RUN ls
RUN ls /app/include/engine
RUN DISABLE_SSL=true gem install puma -v 3.6.0
RUN bundle check || bundle install
CMD ["rails", "server", "-b", "0.0.0.0"]
docker-compose.yml
version: '2'
services:
db:
image: mysql:8.0.21
restart: always
environment:
MYSQL_ROOT_PASSWORD: root@123
MYSQL_DATABASE: prod
MYSQL_USER: root
MYSQL_PASSWORD: root@123
ports:
- "3307:3306"
app:
build:
context: .
dockerfile: Dockerfile
args:
SSH_PRIVATE_KEY: ${SSH_PRIVATE_KEY}
volumes:
- ".:/app"
ports:
- "3000:3000"
depends_on:
- db
environment:
key: value
我还在 Gemfile
中包含了我的引擎路径,并遵循了安装引擎的所有步骤
# engine
gem 'api', path: 'include/engine'
它在本地环境中工作正常,但在 docker 中给我一个错误。
有人可以帮助我找到什么地方吗?
因为这条线
volumes:
- ".:/app"
当开始覆盖图像中已有的现有数据时,这会将您的本地目录安装在容器中。这意味着 /app
中的所有内容都将替换为来自您本地计算机的数据,包括您的引擎 /app/include/engine
。
要解决此问题,您需要将此引擎克隆到本地文件夹中,以便在启动容器时可用。另一种选择是在 /app
之外克隆引擎,例如在 /tmp
或任何你喜欢的地方。