我正在尝试在 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:
文件夹结构如下:
我不想默认运行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 脚本?谢谢!
这是无效位置:
/scripts/hp_sales_data_to_postgres.py
正确的位置是
/scripts/scripts/hp_sales_data_to_postgres.py