cme*_*ren 5 f# type-providers docker docker-compose
我知道如何使用某些 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"]
Run Code Online (Sandbox Code Playgroud)
有些行可能不是必需的(它是相当旧的代码库),但只是为了给您一些提示。重要的部分是COPY --from=builder。希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |