![](/img/trans.png)
[英]Working directory when running a Docker container with a Docker-Compose file
[英]docker-compose not producting “No Such File or Directory” when files exist in container
我有一個簡單的 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_1 | /bin/sh: 1: /var/www/myapp/scripts/myscript.sh: not found
此外,如果我通過docker exec -it {CONTAINER_ID} /bin/bash
執行到myapp
容器中,我可以清楚地看到我的所有文件都在那里。 我可以從字面上運行/var/www/myapp/scripts/myscript.sh
並且它工作正常。
但是,docker-compose 似乎存在一些問題(這可能完全是我的錯誤)。 但我只是對如何執行到容器中並清楚地看到那里的文件感到困惑。 但是 docker-compose 存在 127 說“沒有這樣的文件或目錄”。
您將當前目錄綁定到“/var/www/myapp”,因此您的本地目錄可能正在“隱藏/覆蓋”容器目錄。 嘗試為您的 myapp 服務刪除卷聲明,如果有效,那么您就知道是綁定安裝導致了問題。
與您的問題無關,但您還會遇到的一個問題:您第二次安裝 Python,超出了預先安裝在python
Docker 映像中的版本。
要么切換到debian:buster
作為基本映像,要么不用費心使用 apt-get 安裝 antyhign,而只需 pip 安裝您的依賴項,例如 psycopg。
請參閱https://pythonspeed.com/articles/official-python-docker-image/以解釋為什么不需要這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.