簡體   English   中英

當容器中存在文件時,docker-compose 不會產生“沒有這樣的文件或目錄”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM