docker asp.net core 容器在 mysql 容器之后启动

2024-04-30

我有一个带有 asp.net core 的 docker 容器和一个带有 mysql 的容器。现在我需要等待 mysql 容器启动并准备好(两个容器都通过 docker-compose.yml 启动)。

就像是https://github.com/jwilder/dockerize https://github.com/jwilder/dockerize、wait-for-it.sh 或 wait-for 似乎不适用于 asp.net core 容器。

有人知道如何解决问题吗?

UPDATE

这是我的 dockerfile:

FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore test.csproj

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out test.csproj



# Build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY ./entrypoint.sh ./app/
RUN chmod +x ./app/entrypoint.sh
CMD /bin/bash ./app/entrypoint.sh

COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "test.dll"]

这是我的入口点.sh:

#!/bin/bash

set -e
run_cmd="dotnet run --server.urls http://*:80"

until dotnet ef database update; do
>&2 echo "SQL Server is starting up"
sleep 1
done

>&2 echo "SQL Server is up - executing command"
exec $run_cmd

如果我使用 docker-compose 启动容器,我会收到错误消息:

Unhandled Exception: System.FormatException: Value for switch '/app/entrypoint.sh' is missing.
test          |    at Microsoft.Extensions.Configuration.CommandLine.CommandLineConfigurationProvider.Load()
test          |    at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
test          |    at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
test          |    at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors)
test          |    at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
test          |    at test.Program.Main(String[] args) in /app/Program.cs:line 19

如何将 ENTRYPOINT 和 CMD /bin/bash ./app/entrypoint.sh 命令合并到一个文件中。我想我需要 ENTRYPOINT 来运行 dotnet 应用程序,并需要 cmd 来为entrypoint.sh 等待数据库容器。有没有办法让两者都运行?


https://docs.docker.com/compose/aspnet-mssql-compose/ https://docs.docker.com/compose/aspnet-mssql-compose/

docker 文档列出了如何通过entrypoint.sh 轮询数据库连接来让 ASP.net 容器等待其数据库。

#!/bin/bash

set -e
run_cmd="dotnet run --server.urls http://*:80"

until dotnet ef database update; do
>&2 echo "SQL Server is starting up"
sleep 1
done

>&2 echo "SQL Server is up - executing command"
exec $run_cmd
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker asp.net core 容器在 mysql 容器之后启动 的相关文章

随机推荐

  • MapSingleType错误

    我通过 MVC3 创建一个项目 并首先使用 EF Code 作为数据访问层 在我的数据库中我有PackaginInfo表 在项目中我关心包类 这是我的代码 public class Package public decimal Packag
  • 在 python 中检查堆栈中的局部变量

    我编写了一个小函数 它在堆栈中查找一级并查看其中是否有变量 但是我如何将这个函数变成一个可以在堆栈中一直查找直到找到一个局部变量并购买某个特定名称的函数 import inspect def variable lookup variable
  • Knexjs 返回 mysql 时间戳、日期时间列作为 Javascript Date 对象

    我正在使用 knex 并以格式插入数据YYYY MM DD HH mm ss e g 2017 07 14 15 00 00 保存后 当提取数据时 日期时间列值将作为 JavaScript Date 对象返回 我想以以下格式返回这些对象YY
  • 覆盖骨干模型更改事件

    我认为我想做的事情很简单 我只是不知道该怎么做 当我的模型属性之一发生更改以便将一些数据传递给事件处理程序时 无论更改是值的增加还是减少 我想触发我自己的事件 基本上我希望我的处理程序在视图中执行此操作 handler function i
  • 如何将一列分成两列?

    我有以下 df 0 0 Fuerte venta 0 00 1 Infraponderar 0 00 2 Neutral 14 00 3 Sobreponderar 2 00 4 Fuerte compra 11 00 我怎样才能将列分成两
  • 如何更改Spring-WS的“SOAP-ENV”默认前缀

    我使用 Spring WS 创建了一个 Web 服务 为了保持与旧系统的兼容性 我需要将命名空间前缀从SOAP ENV to soap 我知道SOAP ENV and soap只是命名空间前缀 只要它们引用正确的命名空间 http sche
  • SQL 从一列到另一列搜索字符串

    以前可能有人问过这个问题 但我不知道如何搜索它 我想查找 Column2 中的字符串是否是 Column1 的一部分 或者根本没有在 Column1 中使用 Column1 Column2 ABCDE JKL XC XC PQ A XYZ
  • matplotlib 中的低对比度图像(对比度拉伸)问题

    当读取低对比度图像时 它会自动采用以下示例 In 1 from PIL import Image In 2 import numpy as np In 3 import matplotlib pyplot as plt In 4 img I
  • 迭代 C++ 映射中的键

    有没有办法迭代键 而不是 C 映射对 地图是关联容器 因此 迭代器是一对key val 如果您只需要键 则可以忽略该对中的值部分 for std map
  • rvm 与 sqlite3 冲突

    Users dev rvm gems ruby 1 9 2 head rails3 gems sqlite3 ruby 1 3 1 lib sqlite3 sqlite3 native bundle BUG 分段错误 ruby 1 8 7
  • 为 iPhone 应用程序设置自动构建服务器的最佳实践?

    我正在为我们的 iPhone 应用程序设置一个自动夜间构建服务器 并寻求有关哪些有效 哪些无效的建议 基本上 至少每晚运行所有单元测试并向我们的内部网站发布新的临时版本 所有开发人员都使用笔记本电脑 笔记本电脑将在夜间关闭 因此我正在考虑购
  • 如何在Android上的Xamarin.Forms中的NavigationBar左侧添加ToolbarItem?

    I need to have关闭button 在本例中 在左侧 of 导航栏 如下 我只需要弹出窗口 因此其他元素 导航不存在潜在问题 谷歌对此有一些建议 但我只看到了 iOS 示例 这并不是一个需要处理的大问题 iOS custom re
  • 如何在 GitHub 页面上添加与 index.md 共享相同主题的新页面?

    目前 我的 GitHub 帐户上有一个主页 https
  • 将树形图导出为 R 中的表格

    我想将 hclust dendrogram 从 R 导出到数据表中 以便随后将其导入到另一个 自制 软件中 str unclass fit 提供了树状图的文本概述 但我正在寻找的实际上是一个数字表 我查看了 Bioconductor ctc
  • “便捷初始化程序缺少对另一个初始化程序的‘自我’调用”

    我正在尝试将我的代码转换为 iOS 8 项目 我需要一些关于如何修复此警告的解释 Convenience initializer missing a self call to another initializer 在此代码上 instan
  • 有没有办法在 Visual Studio 或 MATLAB 中“映射”程序执行顺序?

    我所说的 地图 是指我有一个 主 函数 它调用内部的许多其他程序 我希望能够看到哪个文件首先运行 第二个 第三个等等 基本上 我希望能够请参阅这个大型 OOP 设计程序 创建者没有为其制作 UML 类图 中的依赖项列表和顺序 以帮助破译代码
  • 带 Retrofit 的 JSON 解析

    我最近开始使用Retrofit 我对此了解不多 我用谷歌搜索了这个问题 但没有答案适合我的问题 这是 JSON 响应 results description eng This is second time testing img url t
  • 窗口的打开事件和窗口句柄

    如何从刚刚打开的 Outlook 窗口获取窗口句柄 IntPtr OutLook Items items oFolder Items foreach OutLook MailItem mail in items mail Display I
  • TailwindCSS / PurgeCSS 提取器字符串删除一些类

    对于 Tailwind 和 PostCSS PurgeCSS 来说相当新 所以希望这是一个相当简单的修复 In my tailwind config js 我扩展了一些间距值 包括添加 0 5 值以与默认的 Tailwind 间距比例对齐
  • docker asp.net core 容器在 mysql 容器之后启动

    我有一个带有 asp net core 的 docker 容器和一个带有 mysql 的容器 现在我需要等待 mysql 容器启动并准备好 两个容器都通过 docker compose yml 启动 就像是https github com