gpt4 book ai didi

docker - 为什么我的绑定(bind)挂载实际上并没有绑定(bind)某些文件?

转载 作者:行者123 更新时间:2023-12-02 21:03:03 26 4
gpt4 key购买 nike

我有一些 Python 应用程序使用绑定(bind)挂载将代码挂载到容器中,因此我不必在每次代码更改时都构建容器,如下所示:

app:
volumes:
- type: bind
source: ./findface
target: /app/findface

它工作正常。但现在我还想绑定(bind)我的启动脚本,它是从 Dockerfile 调用的:
app:
volumes:
- type: bind
source: ./findface
target: /app/findface
- type: bind
source: ./startup.sh
target: /app

而这个只是不绑定(bind)。主机文件系统中有一个实际文件,但是当我构建容器时它找不到它:
Step 7/8 : RUN chmod +x startup.sh
---> Running in ecaae384b6e5
chmod: cannot access 'startup.sh': No such file or directory
ERROR: Service 'app' failed to build: The command '/bin/sh -c chmod +x startup.sh' returned a non-zero code: 1

我究竟做错了什么?

Dockerfile 本身:
FROM jjanzic/docker-python3-opencv:latest

ENV PYTHONUNBUFFERED=1

RUN pip install --no-cache-dir gunicorn[eventlet]

WORKDIR /app

COPY ./requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

RUN chmod +x startup.sh

CMD "./startup.sh"

最佳答案

根据您的评论,您不需要在构建阶段设置权限,因为该文件在构建时不存在,如果您不想在构建阶段复制,请在主机上设置权限以使其可执行,然后与 docker run 绑定(bind)命令或根据您提到的 yml 配置。

CMD "/app/startup.sh"

例如
docker run -it --rm -v $PWD/startup.sh:/app/startup.sh my_image

关于docker - 为什么我的绑定(bind)挂载实际上并没有绑定(bind)某些文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59575811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com