.net 容器可以共享一个框架吗?
我知道Docker容器可以共享数据卷,但它们是否可以共享框架?例如,如果我有两个.NET服务在IIS上运行,我可以在它们之间共享框架吗 是的,你可以,你通常做的是 备选方案A: 创建busybox映像并复制框架,将该位置作为卷公开.net 容器可以共享一个框架吗?,.net,iis,docker,containers,microservices,.net,Iis,Docker,Containers,Microservices,我知道Docker容器可以共享数据卷,但它们是否可以共享框架?例如,如果我有两个.NET服务在IIS上运行,我可以在它们之间共享框架吗 是的,你可以,你通常做的是 备选方案A: 创建busybox映像并复制框架,将该位置作为卷公开volume/opt/framework/ FROM alpine COPY framework /opt/framework VOLUME /opt/framework COPY busyscript.sh /usr/local/bin/busyscript RUN
volume/opt/framework/
FROM alpine
COPY framework /opt/framework
VOLUME /opt/framework
COPY busyscript.sh /usr/local/bin/busyscript
RUN chmod +x /usr/local/bin/busyscript
CMD ["busyscript"]
而busyscript.sh
看起来
#!/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 code"
# wait forever
while true
do
tail -f /dev/null & wait ${!}
done
在docker-compose.yml中将此图像作为服务添加到您的docker-compose.yml中,比如说“framework”,然后在您希望他们使用的服务上添加
volume_from
- framework:ro
优点:
- 您可以编译、构建和部署framworks soley
- 运行这个额外的容器或多或少没有运行时开销
- 头顶图像大小(阿尔卑斯山,30mb)
VOLUME/opt/framework
将其作为卷公开
在服务B中,以同样的方式装载卷
serviceB:
volume_from
- serviceA:ro
赞成者:
- 没有额外的容器
- 无论服务A是否需要更新,框架都需要与服务A一起部署
- 您依赖于,是否需要更新,是否由于共享而需要重新创建所有其他容器
- 是的,你可以,你通常做的是
备选方案A:
创建busybox映像并复制框架,将该位置作为卷公开
volume/opt/framework/
FROM alpine
COPY framework /opt/framework
VOLUME /opt/framework
COPY busyscript.sh /usr/local/bin/busyscript
RUN chmod +x /usr/local/bin/busyscript
CMD ["busyscript"]
而busyscript.sh
看起来
#!/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 code"
# wait forever
while true
do
tail -f /dev/null & wait ${!}
done
在docker-compose.yml中将此图像作为服务添加到您的docker-compose.yml中,比如说“framework”,然后在您希望他们使用的服务上添加
volume_from
- framework:ro
优点:
- 您可以编译、构建和部署framworks soley
- 运行这个额外的容器或多或少没有运行时开销
- 头顶图像大小(阿尔卑斯山,30mb)
VOLUME/opt/framework
将其作为卷公开
在服务B中,以同样的方式装载卷
serviceB:
volume_from
- serviceA:ro
赞成者:
- 没有额外的容器
- 无论服务A是否需要更新,框架都需要与服务A一起部署
- 您依赖于,是否需要更新,是否由于共享而需要重新创建所有其他容器