如何在没有默认命令的情况下在 Docker 容器中运行特定的 Python 脚本?

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

我正在尝试在 Docker 中创建一个简单的 Python 应用程序。我设置了一个 Dockerfile,如下所示:

FROM python:3.9-slim

WORKDIR /

COPY requirements.txt .

RUN apt-get update && \
    apt-get upgrade -y && \
    pip install --no-cache-dir -r requirements.txt

WORKDIR /scripts

COPY . .

CMD ["tail", "-f", "/dev/null"]

我的 docker-compose 文件如下所示:

services:
  scripts:
    container_name: test_con
    env_file:
      - .env
    build: .
    depends_on:
      - postgres_db

  postgres_db:
    image: postgres:16.4
    container_name: test_db
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: ${DB_NAME}
    ports:
      - "5032:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

文件夹结构如下:

enter image description here

我不想默认运行Python脚本;相反,我想创建 Python 环境并手动运行我想要的脚本。执行 docker-compose up 后,我进入了 test_con 容器的 shell 并尝试运行命令:

python hp_sales_data_postgres.py
。但它会抛出一个错误:
python: can't open file '/scripts/hp_sales_data_to_postgres.py': [Errno 2] No such file or directory
。 如何在没有默认命令的情况下在容器中运行特定的 Python 脚本?谢谢!

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

这是无效位置:

/scripts/hp_sales_data_to_postgres.py

正确的位置是

/scripts/scripts/hp_sales_data_to_postgres.py

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