我在Macbook上按照这个教程,构建一个示例Docker镜像,但是当我尝试运行以下命令时:
docker build -t getting-started .
我遇到了以下错误:
[+] Building 3.2s (15/24)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 1.05kB 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 34B 0.0s
=> [internal] load metadata for docker.io/library/nginx:alpine 2.7s
=> [internal] load metadata for docker.io/library/python:alpine 2.7s
=> [internal] load metadata for docker.io/library/node:12-alpine 2.7s
=> [internal] load build context 0.0s
=> => transferring context: 7.76kB 0.0s
=> [base 1/4] FROM docker.io/library/python:alpine@sha256:94cfb962c71da780c5f3d34c6e9d1e01702b8be1edd2d450c24aead4774aeefc 0.0s
=> => resolve docker.io/library/python:alpine@sha256:94cfb962c71da780c5f3d34c6e9d1e01702b8be1edd2d450c24aead4774aeefc 0.0s
=> CACHED [stage-5 1/3] FROM docker.io/library/nginx:alpine@sha256:686aac2769fd6e7bab67663fd38750c135b72d993d0bb0a942ab02ef647fc9c3 0.0s
=> CACHED [app-base 1/8] FROM docker.io/library/node:12-alpine@sha256:1ea5900145028957ec0e7b7e590ac677797fa8962ccec4e73188092f7bc14da5 0.0s
=> CANCELED [app-base 2/8] RUN apk add --no-cache python g++ make 0.5s
=> CACHED [base 2/4] WORKDIR /app 0.0s
=> CACHED [base 3/4] COPY requirements.txt . 0.0s
=> CACHED [base 4/4] RUN pip install -r requirements.txt 0.0s
=> CACHED [build 1/2] COPY . . 0.0s
=> ERROR [build 2/2] RUN mkdocs build 0.4s
------
> [build 2/2] RUN mkdocs build:
#23 0.378 Traceback (most recent call last):
#23 0.378 File "/usr/local/bin/mkdocs", line 5, in <module>
#23 0.378 from mkdocs.__main__ import cli
#23 0.378 File "/usr/local/lib/python3.10/site-packages/mkdocs/__main__.py", line 14, in <module>
#23 0.378 from mkdocs import config
#23 0.378 File "/usr/local/lib/python3.10/site-packages/mkdocs/config/__init__.py", line 2, in <module>
#23 0.378 from mkdocs.config.defaults import DEFAULT_SCHEMA
#23 0.378 File "/usr/local/lib/python3.10/site-packages/mkdocs/config/defaults.py", line 4, in <module>
#23 0.378 from mkdocs.config import config_options
#23 0.378 File "/usr/local/lib/python3.10/site-packages/mkdocs/config/config_options.py", line 5, in <module>
#23 0.378 from collections import Sequence, namedtuple
#23 0.378 ImportError: cannot import name 'Sequence' from 'collections' (/usr/local/lib/python3.10/collections/__init__.py)
------
executor failed running [/bin/sh -c mkdocs build]: exit code: 1
我使用的Dockerfile:
# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
示例应用程序来源:https://github.com/docker/getting-started/tree/master/app
我对Docker非常陌生,希望有人可以帮忙指点一下如何使其正常工作。
解决方案:
事实证明存在两个问题:
我本应该在新创建的Dockerfile所在的
/app
文件夹中运行docker build -t getting-started .
命令。在我的测试中,我从根文件夹运行了该命令,但是出现了与@HansKilian指出的不同的Dockerfile。一旦我尝试在/app
文件夹内运行该命令,就可以正常工作了。根文件夹中的Docker文件问题是由Python版本不匹配引起的,正如答案中@atline所指出的那样。一旦我按照建议进行更改,我也可以使用该Dockerfile构建镜像。
感谢你们的帮助。
FROM python:alpine
,RUN pip install -r requirements.txt
等),但您展示的 Dockerfile 和链接的 Github 存储库是一个 Node 应用程序。 - Hans Kilian