首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法按照docker教程生成码头映像

无法按照docker教程生成码头映像
EN

Stack Overflow用户
提问于 2021-10-06 11:49:20
回答 4查看 3.8K关注 0票数 7

我在Macbook上遵循这个教程来构建一个示例Docker映像,但是当我尝试运行以下命令时:

代码语言:javascript
运行
复制
docker build -t getting-started .

我得到了以下错误:

代码语言:javascript
运行
复制
[+] 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:

代码语言:javascript
运行
复制
# 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

我是新来的码头工人,如果有人能帮我指出我是如何做到这一点的,我将不胜感激。

解决方案:

事实证明,这里有两个问题:

  1. 我应该从我新创建的Dockerfile所在的/app文件夹中运行/app命令。在我的测试中,我从根文件夹运行命令,其中有一个不同的Dockerfile,@HansKilian指出。一旦我在/app文件夹中尝试了它,它就可以正常工作了。
  2. 根文件夹中的Docker文件的问题是由Python版本不匹配问题引起的,答案中的@atline指出了这一点。一旦我按建议进行了更改,我还可以使用该Dockerfile构建一个映像。

谢谢你们的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-10-06 13:31:40

参见它的Dockerfile,它使用FROM python:alpine AS base,这意味着它使用了一个共享标记。另一个词,在文档编写时,python:alpine的意思是可能是python:3.9-alpine或其他。

但现在,它的意思是python:3.10-alpine,参见

问题发生在mkdocs本身,它使用下面的代码:

代码语言:javascript
运行
复制
from collections import Sequence, namedtuple

但是,如果在python3.9环境中有上述导入,您将看到next,这告诉您它将停止从python3.9 3.10中运行:

代码语言:javascript
运行
复制
$ 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

票数 6
EN

Stack Overflow用户

发布于 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。

票数 3
EN

Stack Overflow用户

发布于 2022-04-04 22:25:28

目前有一个已知的mkdocs问题。

https://forums.docker.com/t/jinja-mkdocs-issue-breaks-docker101tutorial/122671

docker101tutorial的临时修复

代码语言:javascript
运行
复制
# requirements.txt
jinja2==3.0.3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69465156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档