【问题标题】:Starting container process caused: exec: "entrypoint.sh": executable file not found in $PATH启动容器进程导致:exec:“entrypoint.sh”:$PATH 中找不到可执行文件
【发布时间】:2021-09-01 04:01:32
【问题描述】:

我有一个 entrypoint.sh 文件,我用它来启动我的后端,不幸的是,我收到了如上标题所示的错误。

我的根目录

我的后端目录(构建失败的服务)

我的docker-compose.yml

version: "3.9"

services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
      interval: 5s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_DB=${DB_NAME}
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
  backend:
    build: ./backend
    volumes:
      - ./backend:/code
    ports:
      - "8000:8000"
    command: entrypoint.sh
    depends_on:
      db:
        condition: service_healthy

编辑 #1 后端 dockerfile

# syntax=docker/dockerfile:1
FROM python:3.9.6-alpine3.14
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN \
    apk add --no-cache postgresql-libs && \
    apk add --no-cache postgresql-client && \
    apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev && \
    python3 -m pip install -r requirements.txt --no-cache-dir && \
    apk --purge del .build-deps

COPY . /code/
RUN chmod u+x ./entrypoint.sh

【问题讨论】:

  • 请发布您的 docker 文件。
  • 此外,backend 容器中的volumes: 块将使用您主机中的内容覆盖图像的/code 目录,这可能是与图像构建的完全不同的应用程序。如果 Dockerfile 执行更正文件的行尾或权限等操作,volumes: 块将导致此文件丢失。您通常可以安全地删除此块。
  • 添加了 dockerfile

标签: docker docker-compose


【解决方案1】:

该命令应在容器中注明绝对路径

如果它在容器的工作目录中,则使用 ./。

如果您按照自己的方式编写它,则它需要位于 PATH 中。通常在以下文件夹之一中:/bin、/usr/bin 等

【讨论】:

  • 所以我将 command: /code/entrypoint.sh 替换为之前的内容,但对于 db,它表示我的数据库不存在,而我的 backend 表示 django.db.utils.OperationalError: FATAL: no pg_hba.conf entry for host "172.18.0.3", user "vostok1forrestgump", database "hackerreviews", SSL off
猜你喜欢
  • 2021-04-23
  • 2018-09-21
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多