英文:
My Docker image for a Ruby on Rails web API doesn't build a container
问题
我构建了一个Docker镜像来运行GA4咨询的Web API。在我的开发机上运行正常,但在生产环境(CentOS 7服务器)上,它无法构建镜像并返回以下错误:
[+] 正在构建 202.3s (8/10) docker:default
=> [internal] load .dockerignore 0.0s
=> => 传输上下文: 2B 0.0s
=> [internal] load build definition from dockerfile 0.0s
=> => 传输dockerfile: 308B 0.0s
=> [internal] load metadata for docker.io/library/ruby:3.1.2 0.3s
=> [1/6] FROM docker.io/library/ruby:3.1.2@sha256:7681a3d37560dbe8ff7d0a 0.0s
=> [internal] load build context 0.0s
=> => 传输上下文: 3.65kB 0.0s
=> CACHED [2/6] WORKDIR /app 0.0s
=> CACHED [3/6] COPY Gemfile Gemfile.lock ./ 0.0s
=> ERROR [4/6] RUN gem install bundler:2.2.28 201.8s
------
> [4/6] RUN gem install bundler:2.2.28:
121.3 ERROR: 无法找到有效的 gem 'bundler' (= 2.2.28),原因如下:
121.3 无法从 https://rubygems.org/ 下载数据 - SocketError: Failed to open TCP connection to rubygems.org:443 (getaddrinfo: Temporary failure in name resolution) (https://rubygems.org/specs.4.8.gz)
------
dockerfile:7
--------------------
5 | COPY Gemfile Gemfile.lock ./
6 |
7 | >>> RUN gem install bundler:2.2.28
8 | RUN bundle install
9 |
--------------------
ERROR: failed to solve: process "/bin/sh -c gem install bundler:2.2.28" did not complete successfully: exit code: 2
我的 Dockerfile
:
FROM ruby:3.1.2
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN gem install bundler
RUN bundle install
COPY . .
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]
当运行以下命令时:
docker build -t api .
我会得到上述错误。
英文:
I built a Docker image to run a web API for GA4 consulting. It works fine on my development machine, but on production (centos 7 server), it fails to build the image and returns this error:
[+] Building 202.3s (8/10) docker:default
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build definition from dockerfile 0.0s
=> => transferring dockerfile: 308B 0.0s
=> [internal] load metadata for docker.io/library/ruby:3.1.2 0.3s
=> [1/6] FROM docker.io/library/ruby:3.1.2@sha256:7681a3d37560dbe8ff7d0a 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 3.65kB 0.0s
=> CACHED [2/6] WORKDIR /app 0.0s
=> CACHED [3/6] COPY Gemfile Gemfile.lock ./ 0.0s
=> ERROR [4/6] RUN gem install bundler:2.2.28 201.8s
------
> [4/6] RUN gem install bundler:2.2.28:
121.3 ERROR: Could not find a valid gem 'bundler' (= 2.2.28), here is why:
121.3 Unable to download data from https://rubygems.org/ - SocketError: Failed to open TCP connection to rubygems.org:443 (getaddrinfo: Temporary failure in name resolution) (https://rubygems.org/specs.4.8.gz)
------
dockerfile:7
--------------------
5 | COPY Gemfile Gemfile.lock ./
6 |
7 | >>> RUN gem install bundler:2.2.28
8 | RUN bundle install
9 |
--------------------
ERROR: failed to solve: process "/bin/sh -c gem install bundler:2.2.28" did not complete successfully: exit code: 2
My Dockerfile
:
FROM ruby:3.1.2
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN gem install bundler
RUN bundle install
COPY . .
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]`
when running the command:
docker build -t api .
I get the previous error.
答案1
得分: 1
似乎您的生产服务器上的Docker容器无法访问互联网,或者至少无法进行域名解析,因此出现了错误消息。
您的物理服务器能否访问互联网?如果可以,那么请检查为什么您的Docker容器与互联网隔离(查找Docker网络)。
祝好!
英文:
It seems that your docker container on your production server is not able to access the internet or at least a DNS for domain name résolution thus the error message.
Can your physical server access internet? If yes, then check why your docker container is isolated from the internet (look for docker networking)
Cheers
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论