您可以将最后一个语句即
CMD
更改为以下内容。
--在下面的语句中指定pip位置的绝对路径
CMD ["/usr/bin/pip", "install", "-r", "/root/sourceCode/requirements.txt"]
更新:根据评论添加额外的答案。
必须注意一件事情,如果需要带有附加要求的自定义图像,则应将其作为图像的一部分而不是在运行时执行。
使用以下基础图像进行测试:
docker pull colstrom/python:legacy
因此,应使用Dockerfile的
RUN
命令来运行安装软件包。而
CMD
应该用于在容器内部实际运行的应用程序进程。
通过运行以下命令检查基本映像是否具有任何pip软件包,并且结果
为空。
docker run --rm --name=testpy colstrom/python:legacy /usr/bin/pip freeze
这里有一个简单的示例以演示相同的内容:
Dockerfile。
FROM colstrom/python:legacy
COPY requirements.txt /requirements.txt
RUN ["/usr/bin/pip", "install", "-r", "/requirements.txt"]
CMD ["/usr/bin/pip", "freeze"]
requirements.txt
selenium
使用pip包构建镜像 希望您知道将Dockerfile和requirements.txt文件放置在新目录中。
D:\dockers\py1>docker build -t pypiptest .
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM colstrom/python:legacy
---> 640409fadf3d
Step 2 : COPY requirements.txt /requirements.txt
---> abbe03846376
Removing intermediate container c883642f06fb
Step 3 : RUN /usr/bin/pip install -r /requirements.txt
---> Running in 1987b5d47171
Collecting selenium (from -r /requirements.txt (line 1))
Downloading selenium-3.0.1-py2.py3-none-any.whl (913kB)
Installing collected packages: selenium
Successfully installed selenium-3.0.1
---> f0bc90e6ac94
Removing intermediate container 1987b5d47171
Step 4 : CMD /usr/bin/pip freeze
---> Running in 6c3435177a37
---> dc1925a4f36d
Removing intermediate container 6c3435177a37
Successfully built dc1925a4f36d
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
现在运行这个镜像
如果你没有传递任何外部命令,那么容器将从 CMD
中获取命令,该命令只显示 pip
包的列表。在这种情况下,是 selenium
。
D:\dockers\py1>docker run -itd --name testreq pypiptest
039972151eedbe388b50b2b4cd16af37b94e6d70febbcb5897ee58ef545b1435
D:\dockers\py1>docker logs testreq
selenium==3.0.1
所以,以上显示包已经成功安装。
希望这对你有帮助。