我的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
答案 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 镜像,然后基于它运行一个容器。
要生成 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