首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在另一个容器码头中执行另一个容器命令

在另一个容器码头中执行另一个容器命令
EN

Stack Overflow用户
提问于 2018-04-27 16:28:26
回答 2查看 3.1K关注 0票数 0

我有两个容器:一个Redis容器和一个Golang应用程序的容器。我的Golang应用程序正在尝试通过使用命令https://redis.io/topics/mass-insert执行bash脚本来执行RedisMass插入( cat ${FILE}| redis-cli --pipe -h ${HOST} )。

但是,在PATH系统变量中找不到redis-cli,它也不是Golang应用程序服务中内置的shell命令。

因此,我得到了一个exit status 127,这意味着给定的命令没有找到。我想知道如何能够在Golang应用程序服务中不使用redis-cli命令执行bash脚本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-27 17:39:19

只有在重新生成go应用程序映像并安装redis cli工具时,才有可能从应用程序容器中运行该命令。示例使用一个基于ubuntu的映像(将其添加到您的Dockerfile中):RUN apt update; apt -y install redis-tools (如果您使用的是对接者撰写),您可以使用您的Dockerfile文件中指定的名称与您的redis服务器对话。

cat ${FILE}| redis-cli --pipe -h redis-server

假设您为redis容器命名,如本示例所示

代码语言:javascript
复制
version: '3'
services:
  redis-server:
    image: xxx
[...]

或者,如果希望从主机服务器运行命令,则必须确保从redis容器转发redis端口,然后可以使用:

代码语言:javascript
复制
docker exec {containerId} 'cat {FILE}' | redis-cli --pipe -h localhost:{REDIS_CONTAINER_PORT}`
票数 2
EN

Stack Overflow用户

发布于 2018-04-27 17:09:49

当您构建应用程序停靠程序映像时,请确保安装了redis客户端和bash,取决于基本映像,您可以使用add或apt安装-y bash。例如,如果您使用的是高山基图像,您的Docker文件可能如下所示:

Dockerfile

代码语言:javascript
复制
FROM golang:1.10.1-alpine3.7

RUN apk add --no-cache ca-certificates bash redis
RUN apk add --update tzdata curl && rm -rf /var/cache/apk/*
ADD myapp /
CMD ["myapp"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50066698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档