如何在 docker 容器中安装 python 模块

时间:2021-06-16 12:25:57

标签: python docker

我的Docker知识很差,我安装Docker只是因为我会使用freqtrade,所以我遵循了这个简单的HOWTO

https://www.freqtrade.io/en/stable/docker_quickstart/

现在,所有 freqtrade 命令都使用 docker 运行,例如这个

D:\ft_userdata\user_data>docker-compose run --rm freqtrade backtesting --config user_data/cryptofrog.config.json --datadir user_data/data/binance --export trades --stake-amount 70 --strategy CryptoFrog -i 5m

好吧,当我尝试这种策略时,我开始遇到问题 https://github.com/froggleston/cryptofrog-strategies 对于 freqtrade 。这个策略需要 Python 模块 finta 。 我知道 Python 模块 finta 应该安装在我的 Docker 容器中 而不是在我的 Windows 系统中(从控制台“pip install finta”很容易!)。

即使我试图通过 stackoverflow 和 google 找到解决方案,我也不明白如何执行此步骤(在 freqtrade 容器中安装 finta python 模块)。 几个小时后,我真的迷路了。

有人可以通过简单的步骤向我解释如何做到这一点?

Freqtrade 挂载点是 D:\ft_userdata\user_data

3 个答案:

答案 0 :(得分:1)

您可以使用以下命令从容器中获取 bash:

docker-compose exec freqtrade bash

然后:

pip install finta

或 只运行一个命令:

docker-compose exec freqtrade pip install finta

如果上述解决方案不起作用,您可以运行 docker ps 命令并获取容器的 container id。那么

docker exec -it CONTAINER_ID bash
pip install finta

答案 1 :(得分:0)

你需要制作自己的安装了finta的docker镜像。幸运的是,您可以在标准的 freqtrade docker 镜像之上构建。

首先用这两行来创建一个 Dockerfile

FROM freqtradeorg/freqtrade:stable
RUN pip install finta

然后通过运行命令构建映像(调用新映像 myfreqtrade

docker build -t myfreqtrade .

最后更改 docker-compose.yml 文件以通过更改行来运行您的图像

image: freqtradeorg/freqtrade:stable

image: myfreqtrade

应该就是这样。

答案 2 :(得分:-1)

让我们的 Python 代码在容器中运行的方法是将其打包为 Docker 镜像,然后基于它运行一个容器。 enter image description here

要生成 Docker 镜像,我们需要创建一个 Dockerfile,其中包含构建镜像所需的指令。 Dockerfile 然后由生成 Docker 映像的 Docker 构建器处理。然后,使用一个简单的 docker run 命令,我们使用 Python 服务创建并运行一个容器。

包含用于为 Python 服务安装 finta 组装 Docker 映像的说明的 Dockerfile 示例如下

# set base image (host OS)
FROM python:3.8

# install dependencies
RUN pip install finta

# command to run on container start
CMD [ "python", "-V" ]

对于来自 Dockerfile 的每条指令或命令,Docker 构建器都会生成一个镜像层并将其堆叠在之前的层上。因此,该过程产生的 Docker 镜像只是不同层的只读堆栈。

docker build -t myimage .

然后,我们可以检查图像是否在本地图像存储中:

docker images

请参考 freqtrade DockerFile https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile

相关问题