Tag: docker

是否有可能从容器挂载到主机的文件夹?

作为一个例子,我有一个简单的Node.js / Typescript应用程序定义如下: Dockerfile FROM node:6.2 RUN npm install –global typings@1.3.1 COPY package.json /app/package.json WORKDIR /app RUN npm install COPY typings.json /app/typings.json RUN typings install 节点包和types已预先映像。 node_modules和node_modules文件夹默认情况下仅存在于正在运行的容器中。 泊坞窗,compose.yml node-app: … volumes: – .:/app – /app/node_modules – /app/typings 我将当前文件夹从主机安装到容器,从而创build来自/app现有文件夹的卷。 这些被安装回容器,以便应用程序可以使用它们。 问题是,我想在主机系统上看到typings文件夹作为一个只读文件夹(因为一些IDE可以显示你可以在这个文件夹中findtypes提示)。 从我testing的那些文件夹( node_modules和node_modules )在主机上创build后,我运行的容器,但他们总是空的。 只有在容器正在运行时,是否有可能以某种方式从容器卷中看到它们的内容(只读)?

在docker中安装npm依赖关系,并从卷中进行testing

我想使用Docker为简单的node.js项目创build开发环境。 我想在Docker容器中安装我的项目的依赖关系(它们都是npm包),这样他们就不会碰我的主机了,仍然使用一个卷来安装我的代码。 所以,容器应该能够在我装入卷的path上findnode_modules文件夹,但是我不应该从主机上看到它。 这是我的Dockerfile: FROM node:6 RUN mkdir /code COPY package.json /code/package.json WORKDIR /code RUN npm install 这是我如何运行它: docker build –tag my-dev-env . docker run –rm –interactive –tty –volume $(pwd):/code my-dev-env npm test 这是我的package.json: { "private": true, "name": "my-project", "version": "0.0.0", "description": "My project", "scripts": { "test": "jasmine" }, "devDependencies": { "jasmine": "2.4" }, "license": […]

检查/连接到从Java(Spring Boot)或Node.js的docker中运行的Redis

我用Redis在Windows PC上快速入门 docker run -p 6379:6379 redis (Redis没有Windows发行版, fork for Windows不是最新版本) 1:C 10 Sep 08:17:03.635 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf _._ _.-“__ ''-._ _.-“ `. `_. ''-._ Redis 3.2.3 (00000000/0) 64 bit .-“ .-“`. “`\/ _.,_ ''-._ ( ' , […]

docker(撰写)和套接字io – 如何链接容器

我目前正在做一个项目,在那里我重做一个现有的项目,在docker集装箱中使用。 我有3个不同的容器: 一个nodejs服务器,它在端口3001上打开一个socket.io连接,并在端口3000上提供一个网页(也连接到该socket.io服务器) nodejs后端所需的MySQL数据库 一个通过socket.io发送数据到服务器的小应用程序 现在我试图链接这些容器,但是我不确定是否理解了dockernetworking。 我正确地认为在一个docker-compose.yml文件中: 端口:将端口暴露给主机(以及所有其他/所有链接的容器?) 链接:设置启动顺序,并允许一个容器使用者相互暴露的端口,hostname = containername 揭露:只暴露端口到所有链接的容器(不是主机,而不是未链接的容器) 所以我必须经常链接和揭露? 这是否总是工作在双向(socket.io消息可以发回)? 所以这样的事情是正确的(版本3格式): nodeserver: ports: -3000:3000 expose: -3001 links: -database … database: (image mysql…) application: links: -nodeserver … 现在应用程序和网页是否可以作为nodeserver:3000到达socket.io服务器? 我已经尝试了一些,但没有得到充分的工作,所以我想先确定一切。 谢谢你的帮助!

在docker集装箱升级后,NPM会中断

我需要创build一个节点v6.10.3容器,但是最新的npm(目前是v5.4.1 )为本地包使用新的npmfunction。 这样的安装在我的Mac上没有任何问题,但是当我尝试用这样的安装创build一个docker镜像时,在更新npm之后,npm工具会崩溃,并抛出一堆关于丢失包的错误。 这里是Dockerfile的例子,我可以重现这个问题(请注意,我真正的Dockerfile更复杂): FROM ubuntu:xenial RUN apt-get update RUN apt-get install -y curl RUN curl -sL https://deb.nodesource.com/setup_6.x | bash – RUN apt-get install -y nodejs RUN npm i -g npm RUN npm i -g lerna 当生成进程到达线路RUN npm i -g lerna它引发了一堆错误,如: Error: Cannot find module 'process-nextick-args' at Function.Module._resolveFilename (module.js:469:15) at Function.Module._load (module.js:417:25) at Module.require (module.js:497:17) […]

如何从Dockerized Node应用程序内向Elasticsearch发送应用程序日志?

我有一个小的node脚本,其中我使用bunyan来处理应用程序日志logging。 logging器写入本地存储。 我想发送日志到filebeat使用filebeat (这两个都是我的新技术)。 我已经做了一个dockerfile (集装箱应用程序)(下面),但我不确定如何/在哪里插入必要的说明。 有没有办法将我的日志从elasticsearch内部发送到elasticsearch ? 而当我在它的时候,也发送任何日志docker container &os发出? # dockerfile. # installations and entrypoint are to run nightmarejs headless FROM node:latest RUN apt-get update &&\ apt-get install -y libgtk2.0-0 libgconf-2-4 \ libasound2 libxtst6 libxss1 libnss3 xvfb WORKDIR /app COPY ./dist . # enable installation of private npm modules ARG NPM_TOKEN COPY .npmrc […]

我需要运行两次docker-compose才没有错误

我正在学习在真实世界的开发环境中使用Docker,所以我使用Docker在Node.js中创build了一个非常简单的“Hello World”应用程序。 的package.json { "name": "docker-real-world", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.14.0" } } server.js (应用程序的入口点): var express = require('express'); express() .get('/', function(req, res) { res.send('Success'); }) .listen(3000, function(err) { if (!err) { console.log('Server started') […]

无法正确连接到Kubernetes中的Redis

在我的macOS上(不使用Minikube),我已经在这个例子之后对我的Kubernetes集群进行了build模,这意味着我已经按照这个顺序执行了这个逐字logging: # Adding my own service to redix-proxy kubectl create -f ./redis/redis-service.yaml # Create a bootstrap master kubectl create -f examples/storage/redis/redis-master.yaml # Create a service to track the sentinels kubectl create -f examples/storage/redis/redis-sentinel-service.yaml # Create a replication controller for redis servers kubectl create -f examples/storage/redis/redis-controller.yaml # Create a replication controller for redis sentinels kubectl create […]

如何拦截从Spring拦截器到节点服务的请求

这是我正在做的事情: 我有API-GATEWAY(这是在春季启动 ),我想要使用拦截器来validation请求。 如果请求具有正确的凭据,则会调用其他服务( Node.js中的服务 ) API-GATEWAY正在运行在8765 。 我打电话只使用这个8765其他服务 有4个Node.js服务,我希望每个服务调用都需要在API-GATEWAY的拦截器中进行身份validation,这是我使用registry.addInterceptor(tokenValidateInterceptor()).addPathPatterns("/**"); docker容器内托pipespring-boot和node.js服务。 我正在使用API​​-GATEWAY中的zuul路由来调用其他node.js服务。 所有调用其他服务的configuration工作正常,因为我可以通过API-GATEWAY访问其他服务。 对我来说,showstopper是API-GATEWAY中的拦截器。我在这里观察到一个奇怪的场景,我想提到 如果Node.js服务停止拦截器工作正常。但是,如果Node.js服务正在运行它甚至不执行拦截器 ,但是调用正在通过API-GATEWAY,我得到了Node.js服务所需的响应。 这是我的代码片段: @EnableEurekaClient @SpringBootApplication @EnableZuulProxy @Configuration public class Application extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Autowired private TokenValidateInterceptor tokenValidateInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(tokenValidateInterceptor).addPathPatterns("/**"); } 拦截器 @Component public class TokenValidateInterceptor extends HandlerInterceptorAdapter […]

如何在不同的容器中使用共享库node_modules?

我有三个容器运行相同的NodeJS应用程序,并使用NPM来pipe理每个libary(node_modules) 。 到目前为止,我的解决scheme是在HOST运行npm install ,并为所有容器安装node_modules文件夹。 有更好的方法来pipe理它吗?