我有以下docker文件。
MAINTANER Your Name "youremail@domain.tld"
RUN apt-get update -y && \
apt-get install -y python-pip python-dev
# We copy just the requirements.txt first to leverage Docker cache
COPY ./requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip install -r requirements.txt
COPY . /app
ENTRYPOINT [ "python" ]
CMD [ "app.py" ]
即使在app.py文件运行之前,我也要运行一个文件。我该如何实现?我不想将代码放在app.py中。
答案 0 :(得分:2)
一种解决方案是使用docker-entrypoint.sh脚本。基本上,该入口点将允许您定义一组命令以运行以初始化程序。
例如,我可以创建以下docker-entrypoint.sh:
#!/bin/bash
set -e
if [ "$1" = 'app' ]; then
sh /run-my-other-file.sh
exec python app.py
fi
exec "$@"
我会在我的Dockerfile中使用它:
FROM alpine
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["app"]
在线上有很多关于docker-entrypoints的文章和示例。您应该对其进行快速搜索,我相信您会找到许多著名的生产级容器使用的有趣示例。
答案 1 :(得分:0)
您可以尝试创建一个名为run.sh的bash文件并放入其中
app.py
尝试更改CMD
Dim filesToBeCopied as List(Of String)
For Each remoteFile in filesToBeCopied
FileIO.FileSystem.CopyFile(remoteFile, GetLocalPath(remoteFile), FileIO.UIOption.AllDialogs, FileIO.UICancelOption.ThrowException)
Next
还要确保run.sh的可执行文件具有权限