如何解决当容器中存在文件时,docker-compose不产生“无此类文件或目录”
我有一个简单的Dockerfile
FROM python:3.8-slim-buster
RUN apt-get update && apt-get install
RUN apt-get install -y \
curl \
gcc \
make \
python3-psycopg2 \
postgresql-client \
libpq-dev
RUN mkdir -p /var/www/myapp
WORKDIR /var/www/myapp
COPY . /var/www/myapp
RUN chmod 700 ./scripts/*.sh
以及一个相关的docker-compose文件
version: "3"
volumes:
postgresdata:
services:
myapp:
image: ralston3/myapp_api:prod-latest
tty: true
command: /bin/bash -c "/var/www/myapp/scripts/myscript.sh && echo 'hello world'"
ports:
- 8000:8000
volumes:
- .:/var/www/myapp
environment:
SOME_ENV_VARS=SOME_VARIABLE
# ... more here
depends_on:
- redis
- postgresql
# ... other docker services defined below
当我通过以下命令运行docker-compose up时:
docker-compose up -f /path/to/docker-compose.yml up
我的myapp
容器/服务因myapp_myapp_1 exited with code 127
而失败,并出现另一个错误,提示了myapp_1 | /bin/sh: 1: /var/www/myapp/scripts/myscript.sh: not found
此外,如果我通过myapp
执行到docker exec -it {CONTAINER_ID} /bin/bash
容器中,则可以清楚地看到所有文件都在那里。我可以从字面上运行/var/www/myapp/scripts/myscript.sh
,它可以正常工作。
但是,docker-compose似乎存在一些问题(这可能完全是我的错误)。但是我对如何执行到容器中并清楚地看到其中的文件感到困惑。但是docker-compose存在127,说“没有这样的文件或目录”。
解决方法
您将当前目录绑定安装到“ / var / www / myapp”中,因此您的本地目录可能正在“隐藏/覆盖”容器目录。尝试删除myapp服务的卷声明,如果该声明有效,则说明它是导致问题的绑定装入。
,与您的问题无关,但您还将遇到一个问题:您正在第二次安装Python,这已经超出了.exec(
http("Some name.")
.get("/api/call1?viewType=REGULAR")
.check(
jsonPath("$..reviewers[*]").ofType[Seq[Any]].saveAs("reviewers")
)
.resources(
foreach(session => session("reviewers").as[Seq[Any]],"reviewer") {
http("Request resource.")
.get("/api/users/${reviewer}/photo")
.headers(resourceRequestHeaders)
}
)
)
Docker映像中预先安装的版本。
要么切换到python
作为基本映像,要么不用费心用apt-get安装antyhign,而只是pip安装像psycopg这样的依赖项。
请参见https://pythonspeed.com/articles/official-python-docker-image/,了解为什么您不需要这样做。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。