我有以下Dockerfile:
FROM python:3.6
ADD . /
RUN pip install -r requirements.txt
ENTRYPOINT ["python3.6", "./main.py"]
其中main.py接受使用argparse解析的运行时参数,如下所示:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('city')
args = parser.parse_args()
print(args.city)
我已成功地从Dockerfile构建了docker映像,并基于此映像运行了一个容器,具体操作如下:
docker run -it my-docker-image "los angeles"
这非常有效,python中的argparse在我的python代码片段中接收参数“los angeles”作为城市
我现在正努力完成与之相当的任务
docker run -it my-docker-image "los angeles"
但是使用docker-compose.yml文件。现在,我的docker-compose.yml文件如下所示:
version: '3'
services:
data-worker:
image: url-to-my-docker-container-on-ecr-that-i-have-pulled-onto-my-local-machine
container_name: run-for-city
volumes:
- ~/.aws/:/root/.aws
然后我试着跑:
docker-compose up
它开始了,但没有说:
run-for-city | usage: main.py [-h] city
run-for-city | main.py: error: the following arguments are required: city
run-for-city exited with code 2
这很有道理,因为在运行docker compose时,我需要通过city param,但不知道具体如何操作
我试过:
docker-compose up "los angeles"
但这并不奏效
我是否需要向docker-compose.yml添加一些内容,或者向docker-compose-up命令添加一个参数,或者什么
在Docker术语中,您传递的额外参数是“命令”。(在
docker run
中图像名称之后的任何内容都是命令;通常它是要运行的实际命令,但如果Dockerfile中有一个ENTRYPOINT
,它将作为参数传递给入口点。)您可以在docker-compose.yml
文件中复制该命令:如果需要在命令行中传递,唯一真正的方法是通过环境变量Compose will substitute environment variables(注意,语法有点有限),我相信说
你会用
相关问题 更多 >
编程相关推荐