Raj*_*esh 4 windows amazon-web-services docker dockerfile
按照概述的说明将 Duo CloudMapper 部署到 AWS 环境并收到错误
Docker 文件
FROM python:3.7-slim as cloudmapper
LABEL maintainer="https://github.com/0xdabbad00/"
LABEL Project="https://github.com/duo-labs/cloudmapper"
WORKDIR /opt/cloudmapper
ENV AWS_DEFAULT_REGION=us-east-1
RUN apt-get update -y
RUN apt-get install -y build-essential autoconf automake libtool python3.7-dev python3-tk jq awscli
COPY cloudmapper/. /opt/cloudmapper
COPY entrypoint.sh /opt/cloudmapper/entrypoint.sh
# Remove the demo data
RUN rm -rf /opt/cloudmapper/account-data/demo
# Install the python libraries needed for CloudMapper
RUN cd /opt/cloudmapper && pip install -r requirements.txt
ENTRYPOINT /opt/cloudmapper/entrypoint.sh
Run Code Online (Sandbox Code Playgroud)
现在构建 docker 镜像
C:\> docker build -t cloudmapper .
Run Code Online (Sandbox Code Playgroud)
当我使用以下命令运行 docker 时,出现错误
C:/> docker run -t cloudmapper
Run Code Online (Sandbox Code Playgroud)
错误
/bin/sh: 1: /opt/cloudmapper/entrypoint.sh: not found
在 Windows 10 上使用 Docker
dockerfile 中的图像是 python:3.7-slim
假设图像被删除并替换为文本,并且问题没有结束。
bash 可能会返回“找不到文件”
您可以通过确保使用新的 --chmod 标志来确保设置可执行位来解决第一个问题。即使用户是,root也需要至少设置 1 个可执行位。
COPY --chmod=0755 *.sh /opt/cloudmapper/
ENTRYPOINT ["/opt/cloudmapper/entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)
附:此集成 COPY --chmod 仅适用于启用 buildkit 的构建,因此您可能需要强制 buildkit,或将 chmod 拆分为单独的显式RUN步骤。
entrypoint.sh如果您使用像 alpine 这样的轻量级基础镜像,可以通过确保第一行使用 sh 而不是 bash 来解决第二个问题:
COPY --chmod=0755 *.sh /opt/cloudmapper/
ENTRYPOINT ["/opt/cloudmapper/entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)
另外,如果特别是在 Windows 上,请确保所有文件(尤其是入口点 .sh 文件)设置为 utf-8 编码,并带有 lf 样式行结尾。由于linux不理解cr,它会尝试/bin/sh<cr>以显然不存在的shell来执行。
如果文件不存在,请验证entrypoint.sh是否被复制到env.PATH引用的位置,或者入口点指令使用完全限定的路径。
--
编辑添加 cr-lf 启示。
| 归档时间: |
|
| 查看次数: |
10911 次 |
| 最近记录: |