【发布时间】:2022-01-16 14:59:54
【问题描述】:
我尝试在 Windows 上使用 WSL2 通过 Rails on Docker 开发应用程序。
Gemfile 被容器中的下一条命令修改后,
rails new . --force --database=postgresql --skip-bundle
我必须安装 bundle,所以我退出了容器并使用了这个命令。
docker-compose up --build -d
然后发生错误说...
[+] Building 0.9s (2/3)
[+] Building 1.0s (3/3) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 32B 0.1s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/ruby:2.5 0.8s
------
> [internal] load metadata for docker.io/library/ruby:2.5:
------
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: rpc error: code = Unknown desc = error getting credentials - err: exit status 1, out:
docker-compose.yml 是这样的。
version: '3'
services:
web:
build: .
ports:
- '3000:3000'
volumes:
- '.:/product-register'
tty: true
stdin_open: true
Dockerfile 是这样的。
FROM ruby:2.5
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
nodejs \
postgresql-client \
yarn
WORKDIR /product-register
COPY Gemfile Gemfile.lock /product-register/
RUN bundle install
在进入容器并在容器中执行下一条命令之前,
rails new . --force --database=postgresql --skip-bundle
这个命令
docker-compose up -d
工作!!
我该怎么办???
【问题讨论】:
-
您可能会发现使用像
rbenv这样的版本管理器更容易,没有 Docker,运行像rails new这样主动修改源代码的命令,并运行 RSpec 测试而不需要 Docker 间接层。我不会尝试直接在容器内编辑代码。 -
"docker-compose up --build -d" 命令在一段时间后起作用。我不知道它为什么起作用。顺便说一句,感谢您的快速回复!
标签: ruby-on-rails docker windows-subsystem-for-linux