考虑以下app.py
#!/usr/bin/env python
import baker
@baker.command
def initial_setup(setting1, setting2):
# do some important prep work here
@baker.command
def start(arg1, arg2):
# do your thing
if __name__ == '__main__':
baker.run()
这里我使用baker将我的函数公开为子命令。
我还有一个泊坞文件:
FROM alpine
COPY . /app
WORKDIR /app
ENV SHELL=/bin/ash
RUN apk update && apk upgrade && apk add python3
RUN python3 -m pip install pip --upgrade
RUN python3 -m pip install pipenv
RUN pipenv install
RUN pipenv run ./app.py initial_setup foo bar
CMD pipenv run ./app.py start baz qux
当我运行docker build .
时,initial_setup步骤失败并带有
Step ...: RUN pipenv run ./app.py initial_setup foo bar
[...]
No command specified
The command '/bin/sh -c pipenv run ./app.py initial_setup foo bar' returned a non-zero code: 1
当我在命令行中运行pipenv run ./app.py initial_setup foo bar
时,它可以工作,但在Dockerfile构建中,似乎sys.argv
没有传递给baker。
知道如何说服docker文件将参数传递给我的应用程序吗?
更新
答案 0 :(得分:0)
事实证明,sys.argv
按预期通过,我只能责备我的愚蠢:
我的拼写错误initial_setup
,在这种情况下, baker 无法将参数识别为命令,因此错误消息“未指定命令”。