【发布时间】: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