我通过angular-cli创建了新的Angular2应用程序并在Docker中运行它.
起初我在我的本地机器上启动app:
ng new project && cd project && "put my Dockerfile there" && docker build -t my-ui && docker run.
Run Code Online (Sandbox Code Playgroud)
我的Dockerfile
FROM node
RUN npm install -g angular-cli@v1.0.0-beta.24 && npm cache clean && rm -rf ~/.npm
RUN mkdir -p /opt/client-ui/src
WORKDIR /opt/client-ui
COPY package.json /opt/client-ui/
COPY angular-cli.json /opt/client-ui/
COPY tslint.json /opt/client-ui/
ADD src/ /opt/client-ui/src
RUN npm install
RUN ng build --prod --aot
EXPOSE 4200
ENV PATH="$PATH:/usr/local/bin/"
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
一切都还可以,问题是图片大小:939MB !!! 我尝试使用FROM:ubuntu:16.04并在其上安装NodeJ(它可以工作),但我的图像仍然有~450 MB.我知道节点:高山存在,但我无法在其中安装angular-cli.
如何缩小图像尺寸?是否有必要在Dockerfile中运行"npm install"和"ng build"?我希望在localhost上构建应用程序并将其复制到映像.我试图复制dist dir和package.json等文件,但它不起作用(应用程序启动失败).谢谢.
我使用的是LinkedIn REST API.Everithing还可以,但现在我需要改进app,我找不到合适的文档.它在哪里?实际文件完全不合适.我想要文档,其中所有字段将被清楚地描述等.特别是我需要GROUPS的文档,但我不能谷歌它.它在哪里?谢谢.
我通过angular-cli创建了新的Angular2应用程序并在Docker中运行它.但我无法从localhost连接它.
起初我在我的本地机器上启动app:
ng new project && cd project && "put my Dockerfile there" && docker build -t my-ui .
Run Code Online (Sandbox Code Playgroud)
我按命令启动它:
docker run -p 4200:4200 my-ui
Run Code Online (Sandbox Code Playgroud)
然后尝试我的localhost:
curl localhost:4200
Run Code Online (Sandbox Code Playgroud)
并收到
curl:(56)Recv failure:由peer重置连接
然后,我尝试切换到运行容器(docker exec -ti container-id bash)并运行curl localhost:4200并且它可以工作.
我还尝试使用--net = host param运行容器:
docker run --net=host -p 4200:4200 my-ui
Run Code Online (Sandbox Code Playgroud)
它有效.问题是什么?我也尝试在守护进程模式下运行容器,但它没有帮助.谢谢.
我的Dockerfile
FROM node
RUN npm install -g angular-cli@v1.0.0-beta.24 && npm cache clean && rm -rf ~/.npm
RUN mkdir -p /opt/client-ui/src
WORKDIR /opt/client-ui
COPY package.json /opt/client-ui/
COPY angular-cli.json /opt/client-ui/
COPY tslint.json …Run Code Online (Sandbox Code Playgroud) 我正在运行docker容器的集群中运行ELK(Elasticsearch,Logstash,Kibana).这些容器通过GELF端点将日志发送到Logstash.
docker run --log-driver=gelf --log-opt gelf-address=udp://somehost:12201 -ti my-app:latest
Run Code Online (Sandbox Code Playgroud)
然后我在Logstash中处理日志.在这里,我想折叠多行消息并将它们合并为一个单独的事件(在我的例子中是Java异常).我的配置是:
input {
gelf {}
}
filter{
multiline {
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => "previous"
source => "short_message"
}
}
output {
stdout { codec => rubydebug }
}
Run Code Online (Sandbox Code Playgroud)
当我从一个docker容器处理日志时,它工作得很好,但是对于两个或更多个,它不起作用,因为它会折叠两个(或更多)日志流的消息.
我希望,在输入中设置多线程可以解决问题
input {
gelf {
filter{
multiline {
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => "previous"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但多线程无法正常使用此设置(似乎是因为bug).有什么建议?谢谢.
我正在使用:Docker 1.9.1,Logstash 2.1
嗨我正在运行kubernetes集群,我运行Logstash容器.
但我需要使用自己的docker run参数运行它.如果我直接在docker中运行它.我会用命令:
docker run --log-driver=gelf logstash -f /config-dir/logstash.conf
Run Code Online (Sandbox Code Playgroud)
但我需要通过Kubernetes pod运行它.我的pod看起来像:
spec:
containers:
- name: logstash-logging
image: "logstash:latest"
command: ["logstash", "-f" , "/config-dir/logstash.conf"]
volumeMounts:
- name: configs
mountPath: /config-dir/logstash.conf
Run Code Online (Sandbox Code Playgroud)
如何使用参数--log-driver = gelf通过kubernetes来运行Docker容器.谢谢.