docker - 在 Jenkins Dockerfile 中安装 pip 时出现语法错误
问题描述
我正在 Jenkins 上进行培训,并创建了这个简单的 jenkins 图像,并添加了一些功能:
FROM jenkins/jenkins
USER root
# Install ansible
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python get-pip.py
RUN pip install -U ansible
# Install Docker
RUN apt-get update && \
apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable" && \
apt-get update && \
apt-get -y install docker-ce
RUN curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
RUN usermod -aG docker jenkins
USER jenkins
直到几天前,当我的 Jenkins 出现故障时,这一切都很好,现在当我尝试运行这个 Dockerfile 时,我收到以下错误:
Traceback (most recent call last):
File "get-pip.py", line 24226, in <module>
main()
File "get-pip.py", line 199, in main
bootstrap(tmpdir=tmpdir)
File "get-pip.py", line 82, in bootstrap
from pip._internal.cli.main import main as pip_entry_point
File "/tmp/tmp0ZnKQ5/pip.zip/pip/_internal/cli/main.py", line 60
sys.stderr.write(f"ERROR: {exc}")
^
SyntaxError: invalid syntax
构建故障转移第一个 RUN 命令。我检查了我没有任何拼写错误,并且 pip 没有更改安装链接。如果重要的话,我会在虚拟机上运行它,并通过 vscode ssh 登录。
解决方案
这个语法:
sys.stderr.write(f"ERROR: {exc}")
如果我没记错的话,最早出现在 python 3.6 中。看来您的代码现在使用的是旧版本。您的 Dockerfile 中可能会出现许多问题,为了节省您的时间,请在映像中打开 shell 并尝试手动执行命令:
docker run --rm -it --entrypoint="" jenkins/jenkins bash
推荐阅读
- android - 如何设置 android 的 apksigner 以在 Windows 上运行?
- reactjs - 我在 setState 中使用扩展运算符设置状态时感到震惊
- spring - 添加 orderBy 排序到搜索规范
- javascript - 在屏幕大小更改时触发 javascript
- python - 在 sweetviz 中显示所有数据而不是“其他”
- python - 在 Python 中使用经纬度坐标插入交通数据
- c - 函数给了我错误的号码
- node.js - 节点 JS 上传文件
- django - 在 django 中对用户进行身份验证
- android - Android APK:使用 Android Studio 调试 APK