它不是你的问题的一部分来阐述如何应对微服务,生态系统共享库和如何避免出现,但如果你喜欢,你应该阅读这件事,让你至少要列出“分享”的利弊。
除此之外,你可以创建一个库容器,它只提供这个库被安装。
version: "2"
services:
shared:
image: me/mysharelib
m1:
volume_from:
- shared:ro
m2:
volume_from:
- shared:ro
,而你的mysharedlib图像看起来或多或少像这样
FROM busybox
COPY bin/busyscript.sh /usr/local/bin/busyscript
WORKDIR /your/lib/folder
VOLUME /your/lib/folder
CMD ["busyscript"]
和你busyscript就是这样
#!/bin/sh
#set -x
pid=0
# SIGTERM-handler
term_handler() {
if [ $pid -ne 0 ]; then
kill -SIGTERM "$pid"
wait "$pid"
fi
exit 143; # 128 + 15 -- SIGTERM
}
# setup handlers
# on callback, kill the last background process, which is `tail -f /dev/null` and execute the specified handler
trap 'kill ${!}; term_handler' SIGTERM
echo "Started DW php code"
# wait forever
while true
do
tail -f /dev/null & wait ${!}
done
正如你看到的,M1/M2的虚拟... m10挂载了图书馆,它真正在所有微服务中共享。
替代品: 您可以确保使用私有NPM软件包或在映像构建期间将共享库简单打包到微服务m1..m10中。
上面什么形容,当你想用很少的开销,以取代在堆栈中的共享库,并希望确保该库特别适合你以及在同步所有容器instancs
这是很好的信息..谢谢你们 – vaibhav