gpt4 book ai didi

docker-compose "No such file or directory"用于 sh 命令

转载 作者:行者123 更新时间:2023-12-02 17:59:23 27 4
gpt4 key购买 nike

我正在设置 docker-for-windows在我的私有(private)电脑上。

当我不久前在我的办公室笔记本电脑上设置它时,我遇到了同样的问题,但它就停止了。

所以我坚持这个:

我有一个 docker-working 项目(在我的另一台计算机上),带有 docker-compose.yml像这样:

version: '2'

services:
web:
depends_on:
- db
build: .
env_file: ./docker-compose.env
command: bash ./run_web_local.sh
volumes:
- .:/srv/project
ports:
- 8001:8001
links:
- db
- rabbit
restart: always

Dockerfile:
### STAGE 1: Build ###

# We label our stage as 'builder'
FROM node:8-alpine as builder

RUN npm set progress=false && npm config set depth 0 && npm cache clean --force

# build backend
ADD package.json /tmp/package.json
ADD package-lock.json /tmp/package-lock.json
RUN cd /tmp && npm install
RUN mkdir -p /backend-app && cp -a /tmp/node_modules /backend-app

### STAGE 2: Setup ###
FROM python:3

# Install Python dependencies
COPY requirements.txt /tmp/requirements.txt
RUN pip3 install -U pip
RUN pip3 install --no-cache-dir -r /tmp/requirements.txt

# Set env variables used in this Dockerfile (add a unique prefix, such as DOCKYARD)
# Local directory with project source
ENV PROJECT_SRC=.
# Directory in container for all project files
ENV PROJECT_SRVHOME=/srv
# Directory in container for project source files
ENV PROJECT_SRVPROJ=/srv/project

# Create application subdirectories
WORKDIR $PROJECT_SRVPROJ
RUN mkdir media static staticfiles logs

# make folders available for other containers
VOLUME ["$PROJECT_SRVHOME/media/", "$PROJECT_SRVHOME/logs/"]

# Copy application source code to SRCDIR
COPY $PROJECT_SRC $PROJECT_SRVPROJ

COPY --from=builder /backend-app/node_modules $PROJECT_SRVPROJ/node_modules

# Copy entrypoint script into the image
WORKDIR $PROJECT_SRVPROJ

# EXPOSE port 8000 to allow communication to/from server
EXPOSE 8000

CMD ["./run_web.sh"]

docker-compose.env:
C_FORCE_ROOT=True
DJANGO_CELERY_BROKER_URL=amqp://admin:mypass@rabbit:5672//
DJANGO_DATABASE_ENGINE=django.db.backends.mysql
DJANGO_DATABASE_NAME=project-db
DJANGO_DATABASE_USER=project-user
DJANGO_DATABASE_PASSWORD=mypassword
DJANGO_DATABASE_HOST=db
DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost
DJANGO_DEBUG=True
DJANGO_USE_DEBUG_TOOLBAR=off
DJANGO_TEST_RUN=off
PYTHONUNBUFFERED=0

run_web_local.sh:
#!/bin/bash
echo django shell commands
python ./manage.py migrate
echo Starting django server on 127.0.0.1:8000
python ./manage.py runserver 127.0.0.1:8000

当我调用 docker-compose up web我收到以下错误:

web_1 | bash: ./run_web_local.sh: No such file or directory


  • 我检查了行尾,它们是 UNIX
  • 该文件存在于文件系统以及容器内
  • 我可以调用bash run_web_local.sh从我的 windows powershell 和容器内部
  • 我更改了容器内的 UNIX 权限
  • 我遗漏了 bashcommanddocker-compose命令。并尝试使用反斜杠,没有点等。
  • 我重新安装了 docker
  • 我尝试切换到版本 3
  • docker 声称连接到我的共享驱动器 C

  • 并且:完全相同的设置 作品 在我的另一台笔记本电脑上。

    有任何想法吗?所有 200 万个 github 帖子都没有为我解决问题。

    谢谢!

    更新

    删除 volumes:来自 docker-compose 使其工作 like stated here但我没有即时映射。这对我来说有点重要...

    最佳答案

    我最近遇到了同样的问题,使用任何高级编辑器并在 sh 入口点脚本上将行结尾更改为 unix 样式,问题就消失了。

    就我而言,不知道为什么,因为 git 根据 linux 或 windows 主机处理得很好,我最终遇到了同样的情况。
    如果您在容器和主机中安装了文件(在 Windows 中)
    这取决于您如何编辑它们可能会从容器内部更改为 linux,但这会影响外部 Windows 主机。
    之后 git 声明文件 .sh 更改但没有添加没有删除。
    一个图形比较工具显示了只有新行发生了变化。

    解决问题的另一种解决方法,例如,您可以通过 sh 启动容器覆盖的入口点脚本,然后从那里您可以检查已启动的容器 linux 如何查看入口点脚本,即使您可以对其进行测试,也会看到完全相同的错误

    对不起我的英语,不是我的母语。
    希望这可以帮助某人。

    关于docker-compose "No such file or directory"用于 sh 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51113531/

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