我有一个Docker映像,它是一个node.js应用程序。该应用程序从本地运行的Redis检索一些配置值。因此,
我试图在Docker映像内的同一容器内安装和运行Redis。
如何扩展Docker文件并在其中配置Redis?
到目前为止,Dockerfile如下:
从节点:碳
WORKDIR / app
COPY package.json / app
运行npm安装
复制。/ app
展览3011
CMD节点/app/src/server.js
最好的解决方案是使用docker
compose。这样,您将创建一个redis容器,链接到它,然后启动您的node.js应用程序。首先是要在此处安装docker
compose-(https://docs.docker.com/compose/install/)。
一旦启动并运行,您应该在与应用程序的dockerfile相同的文件夹中创建docker-compose.yml。它应包含以下内容
version: '3'
services:
myapp:
build: .
ports:
- "3011:3011"
links:
- redis:redis
redis:
image: "redis:alpine"
然后可以从您的node.js应用程序访问redis ,localhost:6379
但是可以使用redis:6379
redis来访问redis实例。
要启动您的应用,您可以docker-compose up
在终端中运行。最佳做法是使用a network
代替,links
但这是为了简单起见。
也可以根据需要完成此操作,将redis和node.js放在同一映像上,以下Dockerfile应该可以工作,它基于问题所在:
FROM node:carbon
RUN wget http://download.redis.io/redis-stable.tar.gz && \
tar xvzf redis-stable.tar.gz && \
cd redis-stable && \
make && \
mv src/redis-server /usr/bin/ && \
cd .. && \
rm -r redis-stable && \
npm install -g concurrently
EXPOSE 6379
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 3011
EXPOSE 6379
CMD concurrently "/usr/bin/redis-server --bind '0.0.0.0'" "sleep 5s; node /app/src/server.js"
第二种方法确实是一种不好的做法,为了简化起见,我同时使用了它而不是主管或类似工具。CMD中的睡眠是为了允许Redis在实际启动应用程序之前启动,您应该对其进行调整以使其最适合您。希望这会有所帮助,并且您会使用第一种方法,因为这是更好的做法
我有一个Docker映像,它是一个Node.js应用程序。应用程序从本地运行的Redis检索一些配置值。因此,我试图在Docker映像的同一容器中安装和运行Redis。 我如何扩展Docker文件并在其中配置Redis? 截至目前,Dockerfile如下所示:
我如何在k8s中拉私人映像并使用它? 这是我的yaml for pod 日志为:-container“privaterePo”在pod“privaterePo”正在等待启动:尝试拉映像但失败
问题内容: 我已成功将docker用于Windows 10上带有Linux容器的Windows窗口-但现在我想使用新的闪亮Windows Server 2016进行该任务-但是如何呢? 我已经使用此指南安装了Docker功能:https : //msdn.microsoft.com/zh- cn/virtualization/windowscontainers/quick_start/quick_
我已经设置了一个dockerfile使用php: 7-fpm图像。除了这个图像被用来运行我的网站,我想添加一个cron来执行常规任务。 我已经创建了一个cron,把它放在正确的文件夹中,并运行然后或者如果我日志文件都可以正常工作。但是当容器被创建时,我不能让它工作,显然我不想手动启动cron。 据我所知,我需要使用或在启动时运行命令,但每次我这样做它会停止我的网站工作,因为我覆盖了必要的功能的原始
问题内容: 如何运行在Google Container Engine本地构建的docker映像? 问题答案: 您可以将图片推送到Google Container Registry并从pod清单中引用它们。 详细说明 假设您进行了正确的设置,则安装了运行最新版本的Kubernetes和Google Cloud SDK 的GKE集群。 设置一些环境变量 标记您的图片 推你的形象 为您的容器创建一个容器
问题内容: 我使用Java创建了一个Docker映像,并将jar文件复制到该映像中。我的Dockerfile是: 执行以下命令后: 在控制台中,我看到了应用程序的输出,一切都很好。但是当我停止图像时,我不知道如何再次运行图像?当我执行以下命令时: 该应用程序再次运行,但是在我的Dockerfile中,我已经编写了此命令。如何在不使用此命令的情况下运行映像并使应用程序自动运行? 问题答案: 图像和容