docker - 在 Dockerfile 中下载一个 git 存储库
问题描述
每当我将提交提交到我的 GitHub 存储库时,我都会使用 docker.com 自动构建。(见https://docs.docker.com/docker-hub/builds/)
我想调用luacheck
docker 镜像中的所有文件,如果有警告就让它失败。
我故意添加了一个 Lua 错误,并在我的Dockerfile
:
RUN useradd -d /gluon gluon
RUN cd /gluon
RUN git clone https://github.com/rubo77/gluon/ gluon
RUN cd gluon
USER gluon
VOLUME /gluon
WORKDIR /gluon
RUN git checkout docker
RUN cp -a docs/site-example/ site
RUN luacheckrc .; if [ $? -gt 0 ]; then exit 1; fi
见:https ://github.com/rubo77/gluon/commits/docker
但它失败了
/bin/sh: 1: cd: can't cd to /gluon
甚至在 git 存储库之前
解决方案
您必须首先为gluon
用户创建目录并赋予其写权限:
FROM ubuntu
RUN useradd -d /gluon gluon
RUN apt-get update && apt-get install -y git
RUN mkdir /gluon
RUN chown -R gluon:gluon /gluon
USER gluon
RUN cd /gluon
RUN git clone https://github.com/rubo77/gluon/ gluon
RUN cd gluon
VOLUME /gluon
WORKDIR /gluon
RUN git checkout docker
RUN cp -a docs/site-example/ site
RUN luacheck .; if [ $? -gt 0 ]; then exit 1; fi
推荐阅读
- c# - C# Convert long to bytes 出错:& 不能应用于 long 和 ulong
- python - Pandas 数据框无法在 docker 中运行
- java - proguard:无法读取 [C:\Program Files\AdoptOpenJDK\jdk-11.0.6.10-hotspot\lib\rt.jar]
- java - 如何在另一个活动中显示从一个活动传递的值?
- python - 如何检查传递给处理多线程的函数的返回值
- elasticsearch - 将 ElasticSearch 从 2 升级到 7.6
- forms - 即使在 reCAPTCHA v2(不可见)和 Honeypot 集成之后,垃圾邮件机器人仍会继续创建用户注册 - 我还能做什么?
- python - 如何将 sympy 符号添加到数据框值
- powershell - 将排除列表添加到 foreach CSV
- python - 将因变量可视化为其他两个自变量的函数的最佳方法,每个变量都是数据农场的一列?