gpt4 book ai didi

docker - F# 类型是否可以与容器化 (Docker) 资源一起使用?

转载 作者:行者123 更新时间:2023-12-02 09:54:33 25 4
gpt4 key购买 nike

我知道如何使用某些 F# 类型提供程序,例如SQLProvider对于非 Docker 开发:#if DEBUG ,连接到本地数据库,否则连接到生产数据库。或者,如果类型提供程序支持它(与 SQLProvider 一样),请在配置文件中指定连接字符串。然而,在这两种情况下,数据库在构建时都是可用的(因为它必须如此)。

但是,我刚刚开始使用 Docker 容器,并且当数据库仅在运行时在另一个容器中可用时(例如通过 docker-compose 创建的专用网络),我无法看到如何使用类型提供程序。对于开发来说,虽然肯定不理想,但我可以通过在本地(Docker 外部)设置相同的数据库来解决这个问题,这样类型提供程序就可以获取架构。然而,在部署时,数据库需要可用,但我的理解是,而 docker-compose将按依赖顺序启动容器,实际上构建容器是完全隔离的。

是否有使用类型提供程序访问容器化数据库的好方法?

最佳答案

您可以使用多阶段 docker 构建。设置一个包含数据库的“构建”docker 镜像,并传递您要使用的构建程序集。这是我们代码库中的简短示例。

# BUILDER IMAGE (with DB in it)
FROM microsoft/dotnet:2-sdk-jessie as builder

RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

RUN echo "deb http://download.mono-project.com/repo/debian jessie main" > /etc/apt/sources.list.d/mono-official.list

RUN apt-get update && apt-get install -y \
mono-devel

ADD ./ /app
WORKDIR /app

RUN ./build.sh Publish

# FINAL IMAGE
FROM microsoft/dotnet:runtime

COPY --from=builder /app/deploy/ app/

WORKDIR ./app/
CMD ["dotnet", "MY_AMAZING_APP.dll"]

有些行可能不是必需的(它是相当旧的代码库),但只是为了给您一些提示。重要的部分是COPY --from=builder。希望对您有所帮助。

关于docker - F# 类型是否可以与容器化 (Docker) 资源一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50502208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com