docker中的entrypoint.sh文件没有这样的文件或目录错误

问题描述 投票:0回答:1

我正在学习一门课程,目前停留在它的这部分

启动 Docker 容器后(这表明它在运行本地主机时已正确安装),我得到:

service "movies" is not running

文件夹结构:

folder structure

docker-compose.yaml

# version: '3.8'

services:
  movies:
    build: ./TestDrivenIO
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./TestDrivenIO/:/usr/src/TestDrivenIO/
    ports:
      - 8009:8000
    env_file:
      - ./TestDrivenIO/.env.dev
    depends_on:
      - movies-db
  movies-db:
    image: postgres:15
    volumes:  # create a volume and bind directory to the container
      - postgres_data:/var/lib/postgresql/data/
    environment:  # added ENV key to define a name for default DB & credentials
      - POSTGRES_USER=movies
      - POSTGRES_PASSWORD=movies
      - POSTGRES_DB=movies_dev

volumes:
  postgres_data:

Dockerfile:

# pull official base image
FROM python:3.11.2-slim-buster

# set working directory
WORKDIR /usr/src/TestDrivenIO

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# updated
# install system dependencies
RUN apt-get update \
  && apt-get -y install netcat gcc postgresql \
  && apt-get clean

# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt

# new
# copy entrypoint.sh
COPY ./entrypoint.sh /usr/src/TestDrivenIO/entrypoint.sh
RUN chmod +x /usr/src/TestDrivenIO/entrypoint.sh

# add app
COPY . .

# new
# run entrypoint.sh
ENTRYPOINT ["/usr/src/TestDrivenIO/entrypoint.sh"]

我如何确定这里的问题?我看不到任何检查日志的方法,似乎我已经做对了所有事情,但我不明白为什么它说它没有运行。

这是检查进程时的样子:

docker ps

经过一些额外的研究,我发现由于某种原因,

entrypoint.sh
文件没有被复制。

file not found error

python django docker-compose
1个回答
0
投票

在研究了我可能能做的一切之后......我回去注释掉了

Dockerfile
入口点和下面的部分。有效。所以这一改变就是问题所在。

然后我删除了入口点文件,然后创建了一个具有相同内容的新文件。取消注释这些内容。它成功了!我已经像班级所说的那样在本地更改了文件的权限,但显然这导致了复制文件的问题。

更新:不,我错了。我只是再也没有取消注释该部分。还是不行。

© www.soinside.com 2019 - 2024. All rights reserved.