【发布时间】:2017-05-24 18:57:32
【问题描述】:
我知道 Docker 容器可以共享数据卷,但它们可以共享框架吗?例如,如果我有两个在 IIS 上运行的 .NET 服务,我可以在它们之间共享框架吗?
【问题讨论】:
标签: .net iis docker containers microservices
我知道 Docker 容器可以共享数据卷,但它们可以共享框架吗?例如,如果我有两个在 IIS 上运行的 .NET 服务,我可以在它们之间共享框架吗?
【问题讨论】:
标签: .net iis docker containers microservices
是的,你可以,你通常做的是
备选方案 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 中,例如“框架”,然后在您希望它们使用的服务上添加
volume_from
- framework:ro
优点:
缺点:
备选方案 B
您使用您的一项服务作为“框架基础”,比如说服务 A,这意味着您复制该服务上的框架(使用它的 2 个服务之一)并再次使用 VOLUME /opt/framework 将其公开为卷
在服务 B 中,以同样的方式挂载卷
serviceB:
volume_from
- serviceA:ro
专业版:
缺点:
【讨论】: