【问题标题】:Docker Compose "ERROR: file not found", but ubuntu shell can find the fileDocker Compose“错误:找不到文件”,但 ubuntu shell 可以找到该文件
【发布时间】:2020-06-14 17:38:14
【问题描述】:

我正在尝试获取 Docker Compose 脚本来测试 python 程序。以下是运行 docker-compose 命令的 .sh。

#!/usr/bin/env bash

script_path=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
base_path=${script_path}/src

container_path=${base_path}/deploy/
docker_compose_path=${container_path}docker-compose.yml

sudo nano ${base_path}/tests/scrap/test_r.py

docker-compose -f "${docker_compose_path}" run service_name pytest -x ${base_path}/tests/scrap/test_r.py
docker-compose -f "${docker_compose_path}" down

运行时的问题是出现错误并显示以下消息:

ERROR: file not found: /correct/path/to/test_r.py

注意:我检查了很多次,路径(绝对)是正确的。

这个错误的奇怪之处在于,shell 可以毫无问题地找到它。位于 docker-compose 顶部的 nano 命令完美运行,加载具有正确内容的文件。尽管如此,使用相同的确切路径,docker-compose 似乎无法找到并执行它(已经尝试过 chmod +x test_r.py 但它不起作用。Docker Compose 根本找不到它)。

无论您需要什么额外信息,都可以提出来。谢谢:P

注意:我不认为该项目在另一台运行 MacOS 的计算机上完美运行的事实是问题的根源。我的电脑正在尝试在 Ubuntu 环境中执行脚本。如果考虑到这一点是朝着正确方向迈出的一步,我不知道如何解决这个问题。

编辑:添加文件 docker-compose.yml 的信息:

version: '3.5'

services:
  service_name:
    image: image_name
    build:
      context: ../
      dockerfile: Dockerfile
    tty: true
    volumes:
      - ../../../workers:/opt/workers/
    working_dir: /opt/workers/src
    env_file:
      - ../local/worker.env

【问题讨论】:

  • 您能否编辑问题并添加您的docker-compose.yml 文件的内容,至少是service_name 服务?容器通常具有与主机不同的文件系统布局(打包的应用程序位于 /app 中很常见,独立于主机文件系统布局),因此您的绝对路径可能在这里不起作用。
  • 已更新问题。对不起,服务的通用命名,但我试图在这里保密......
  • 脚本中的${base_path} 是您在volumes: 中提到的workers 目录吗?
  • StackOverflow 不允许我在接下来的 22 小时内结束问题,但我向老板提出了所有问题,一切顺利。谢谢!!

标签: python docker ubuntu docker-compose


【解决方案1】:

原来我所要做的就是更新 docker-compose.yml 文件中的“working_dir”路径以使其找到相应的 py 文件。问题是我不知道我必须注意这些信息。感谢@David Maze 问了我所有的问题。有时问正确的人会指向正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    相关资源
    最近更新 更多