gpt4 book ai didi

python - 从一个容器到另一个容器运行命令

转载 作者:搜寻专家 更新时间:2023-10-31 23:44:24 25 4
gpt4 key购买 nike

我有两个 dockerized 项目:一个使用 NodeJS,另一个使用 Python

我想从 NodeJS 应用触发 Python 脚本执行(在带有 Python 应用的容器上)。

基本上 NodeJS 应用会运行类似 exec('python3 script.py') 的程序,但它应该在 Python 应用容器上运行。

我怎样才能实现这个确切的行为?提前致谢!

最佳答案

Docker 容器是微服务架构的一种实现。因此,它们应该完全分离并使用 TCP(通常是 HTTP)在它们之间进行通信。所以你的 python 容器应该公开一些 REST 调用(例如)。

有一种方法可以解决这个问题,但不推荐这样做,因为它会向在 nodejs 容器内运行的任何人打开你的 docker 守护进程。我将它列在这里是因为它在开发过程中很有用。

1 - 安装 Docker CLI
在您的 nodejs Dockerfile 中,添加以下行:

ENV DOCKER_VERSION=18.09.4
RUN curl -sfL -o docker.tgz "https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz" && \
tar -xzf docker.tgz docker/docker --strip=1 --directory /usr/local/bin && \
rm docker.tgz

这只会安装完整 docker 下载的最低限度的 CLI 部分。

2 - 绑定(bind)安装 docker 套接字。
在您的撰写文件中,添加以下内容:

services:
mypython:
container_name: mypython
...
mynodejs:
...
volumes:
- /var/run/docker.sock:/var/run/docker.sock

3 - 调用你的 python 脚本。
您的 nodejs 容器中,您现在可以使用 docker CLI。

# Log into your nodejs container first
docker exec -it mynodejs sh
# and execute some command in another container
docker exec mypython python3 script.py

以上是最简单的方法。您还可以避免安装 Docker CLI 并使用 Docker API直接,但它通常需要您为 Docker CLI 在一行中执行的操作编写多行。

关于python - 从一个容器到另一个容器运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55317195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com