我在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
我是新来的码头工人,如果有人能帮我指出我是如何做到这一点的,我将不胜感激。
解决方案:
事实证明,这里有两个问题:
/app
文件夹中运行/app
命令。在我的测试中,我从根文件夹运行命令,其中有一个不同的Dockerfile,@HansKilian指出。一旦我在/app
文件夹中尝试了它,它就可以正常工作了。谢谢你们的帮助。
发布于 2021-10-06 13:31:40
参见它的Dockerfile,它使用FROM python:alpine AS base
,这意味着它使用了一个共享标记。另一个词,在文档编写时,python:alpine
的意思是可能是python:3.9-alpine
或其他。
但现在,它的意思是python:3.10-alpine
,参见这。
问题发生在mkdocs
本身,它使用下面的代码:
from collections import Sequence, namedtuple
但是,如果在python3.9环境中有上述导入,您将看到next,这告诉您它将停止从python3.9 3.10中运行:
$ docker run --rm -it python:3.9-alpine /bin/sh
/ # python
Python 3.9.7 (default, Aug 31 2021, 19:01:35)
[GCC 10.3.1 20210424] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import Sequence
<stdin>:1: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
因此,对于您来说,要使指南对您再次有效,需要将FROM python:alpine AS base
更改为:
FROM python:3.9-alpine AS base
发布于 2022-03-27 13:00:16
我检查了最新的mkdocs和最新的Build1.3.0,但是看起来它在1.2 -> 1.3的变更分支版本上有很多变化,所以我得到了最新的1.2.4。
我的requirements.txt从"mkdocs==1.2.2“到"mkdocs==1.2.4”。我也不碰Dockerfile。
发布于 2022-04-04 22:25:28
目前有一个已知的mkdocs
问题。
https://forums.docker.com/t/jinja-mkdocs-issue-breaks-docker101tutorial/122671
docker101tutorial
的临时修复
# requirements.txt
jinja2==3.0.3
https://stackoverflow.com/questions/69465156
复制相似问题