尝试通过功能应用程序从Azure容器注册表中部署Nginix容器,
得到一个错误,
Linux Worker在资源组中不可用
如何使linux worker进入资源组?
用于部署的Dockerfile,
FROM nginx
COPY dist /usr/share/nginx/html
Run Code Online (Sandbox Code Playgroud) 我正在使用 spring boot maven 插件在 Azure DevOps 上构建一个 java spring boot 应用程序 docker 容器。之后我想将其推送到天蓝色的容器注册表。但它失败了
本地不存在带有以下标签的镜像:***/my/container
不幸的是,容器 uri 的开头被***. 但正如您在下面的输出中看到的/usr/bin/docker images,容器已注册。我尝试遵循以下示例:https://medium.com/@TimvanBaarsen/build-your-spring-boot-project-using-azure-pipelines-in-azure-devops-3305977991d
管道步骤
steps:
- task: Maven@3
displayName: "Build Docker image"
inputs:
mavenPomFile: 'pom.xml'
goals: 'spring-boot:build-image'
publishJUnitResults: false
jdkVersionOption: '1.11'
mavenOptions: '-Xmx3072m -Dspring-boot.build-image.imageName=acr-foobar.azurecr.io/my/container'
- task: Docker@2
displayName: Push Docker image
inputs:
containerRegistry: 'acr-foobar.azurecr.io'
repository: 'my/container'
command: 'push'
tags: 'latest'
Run Code Online (Sandbox Code Playgroud)
输出 Maven 任务
[INFO] Successfully built image 'acr-***/my/container:latest'
Run Code Online (Sandbox Code Playgroud)
输出 Docker 任务
Starting: Push Docker image
==============================================================================
Task : …Run Code Online (Sandbox Code Playgroud) 我已经按照教程将.net核心Web应用程序构建到docker映像,发布到azure容器注册表,然后我设置了我的VSTS Release模板以将容器部署到app服务.
这一切似乎都有效,我可以在容器注册表中查看我的图像,部署似乎成功 - 但是当导航到应用服务站点时,我得到的只是HTTP 503 - 服务不可用.
应用程序服务已启动,我可以通过bash在我的文件系统中看到部署 - 所以我想知道我是否遗漏了什么?
我的任何模板中都没有'startup'命令,我想知道它是否可以这样?
该网站从VS2017完美运行,包括通过docker进行调试,所以它真的只是...如何让App Service实际加载和执行图像?
谢谢!
编辑
除此之外,我还可以访问docker诊断日志,声称"图像操作系统"窗口"无法在此平台上使用".
我的基本映像是microsoft/aspnetcore:2.0映像,它在我的开发环境中的linux容器上运行得非常好......但似乎无法在Linux App Service中运行?
aspnetcore:2.0基本映像不适合Linux应用服务吗?
azure docker azure-web-app-service azure-pipelines-release-pipeline azure-container-registry
我熟悉 docker (dind) 中的 docker 但与microsoft/azure-cliimage throw一起使用docker command not found。
这是我的文件设置gitlab-ci.yml。我创建了Service Principal用于对天蓝色云和相应资源组进行身份验证的。
image: docker:latest
variables:
PASSWORD: *********
TENANT_ID: *****-************-*************
APP_ID: *********-*****-*****
CLIENT_ID: ****************
ACR_ID: *******************
stages:
- build
- deploy
services:
- docker:dind
before_script:
- docker info
build_staging_image:
stage: build
image: microsoft/azure-cli
script:
- az login --service-principal --username $APP_ID --password $PASSWORD --tenant $TENANT_ID
- docker build -t azure-vote:latest ./azure-vote
- docker tag azure-vote votingtestapp.azurecr.io/azure-vote:latest
- docker push votingtestapp.azurecr.io/azure-vote:latest
deploy:develop:
stage: deploy
script: …Run Code Online (Sandbox Code Playgroud) 我将 Docker 映像存储在 Azure 上的私有存储库中。每次我将具有相同标签(例如最新)的图像推送到该存储库时,前一个图像就会变为未标记的,但仍保留在存储库中。这导致存储库中堆积了大量未标记的图像。我想要一个使用 azure cli 的命令来一次性删除所有未标记的图像。
例如,输入以下命令:
az acr repository show-manifests -n myRegistry --repository myRepo
返回 d24-staging-fuzzy-search-srv 存储库的几个清单:
[
{
"digest": "sha256:blablabla1",
"tags": null,
"timestamp": "t1"
},
{
"digest": "sha256:blablabla2",
"tags": null,
"timestamp": "t2"
},
{
"digest": "sha256:blablabla3",
"tags": [
"latest"
],
"timestamp": "t3"
}]
我想在 azure cli 中使用一个命令来删除所有具有“null”标签的 mainfest,并保留具有“latest”标签的 mainfest
我有一个从 Azure 容器注册表部署的 docker 映像。一切正常,除了我希望能够看到环境变量从门户中配置的应用程序设置传递给我正在运行的 docker 映像。它是一个使用 process.env.VariableName 访问环境变量的 Node 应用程序。
作为一个例子,它在这里说 https://blogs.msdn.microsoft.com/waws/2017/09/08/things-you-should-know-web-apps-and-linux/#SetEnvVar ...“应用程序设置被注入在运行时作为环境变量进入您的应用程序”
我尝试了以下方法。
在 Azure 门户中设置应用程序设置。这些应该按照文档传递给正在运行的 Docker 映像,但我的 Node 应用程序中的 process.env.VariableName 未设置。
我曾尝试使用设置环境变量的 Docker 撰写文件,但 process.env.VariableName 再次为空。
我什至更新了 VSTS 构建参数,在构建时将变量传递给我的 Docker 文件,从而设置环境变量。同样没有变量传递给正在运行的 Docker 镜像。
我的结论是 Azure Web App for Containers 中不允许自定义环境变量?
难道我做错了什么?
在此文档之后,Docker registry service connection可在以下 YAML 中找到。什么是Docker registry service connection,在哪里可以找到?
trigger:
- master
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: <Docker registry service connection>
imageRepository: <Name of your image repository>
containerRegistry: <Name of the Azure container registry>
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
tag: '$(Build.BuildId)'
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: AzureWebAppContainer@1 # Add this at the end of your file
inputs:
azureSubscription: '<Azure service connection>'
appName: '<Name of the container web …Run Code Online (Sandbox Code Playgroud) azure docker azure-devops azure-pipelines azure-container-registry
我被卡住了,也许你可以帮助我。(更新:经过调查,我知道它不起作用,因为构建/发布后 Azure 函数的 wwwroot 文件夹是空的。主要问题是为什么)
我正在尝试使用 Azure Container Registry (Linux) 发布 Azure Function 这一步我认为我成功了。我确实创建了 CI/CD 管道,并且所有内容都正确发布。
当我进入我的 azure 函数主页时,如:https : //myAzureFuncion.azurewebsites.net/(这只是示例)
我确实看到:
在开始时函数本身。这没什么特别的,因为我只是想测试 CI/CD 所以它是 AF 模板。我只是将授权更改为匿名(以排除身份验证问题):
[FunctionName("MyAzureFunctionName")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request. Runned!");
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
return name != null
? (ActionResult)new …Run Code Online (Sandbox Code Playgroud) azure docker azure-devops azure-functions azure-container-registry
我们使用 terraform 将 Linux 应用服务部署到 Azure。相关配置代码为:
resource "azurerm_app_service" "webapp" {
app_settings = {
DOCKER_REGISTRY_SERVER_URL = "https://${local.ctx.AcrName}.azurecr.io"
DOCKER_REGISTRY_SERVER_USERNAME = data.azurerm_key_vault_secret.acr_admin_user.value
DOCKER_REGISTRY_SERVER_PASSWORD = data.azurerm_key_vault_secret.acr_admin_password.value
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
问题是 terraform 不考虑app_settings秘密,因此它以明文形式输出DOCKER_REGISTRY_SERVER_PASSWORDAzure DevOps 输出中的值(我混淆了实际值):

所以,我想知道 - 在 Azure Linux 应用服务主机上运行的 docker 是否可以使用相应的 ACR 进行身份验证,而无需我们以一种对每个可以检查管道输出的人都如此明显的方式传递密码?
下面的文章似乎总体上相关 - https://docs.docker.com/engine/reference/commandline/login,但目前还不清楚我们如何在我的上下文中应用它(如果有的话)。
另外,根据https://feedback.azure.com/forums/169385-web-apps/suggestions/36145444-web-app-for-containers-acr-access-requires-admin#%7Btoggle_previous_statuses%7D Microsoft 已开始工作相关的事情,但看起来这仍然是一项正在进行的工作(近 5 个月)。
authentication azure docker terraform azure-container-registry
我们有一个使用 .Net Framework 4.6.2 构建的 Windows 服务应用程序。此 .Net 项目从自定义 Nuget 源引用 Nuget 包。我们需要使用 DevOps 管道构建 docker 映像、将 docker 映像推送到 Azure 容器注册表并将 docker 映像发布到 Azure Kubernetes Services (AKS)。
\n我\xe2\x80\x99以下面的github示例作为参考并创建了一个docker文件。
\n\n我\xe2\x80\x99ve在nuget.config中配置了packageSources和PackageSourceCredentials,以便docker能够从自定义提要中提取nuget包。
\n但是,这种方法需要在个人访问令牌过期后进行更新。
\n您是否有任何替代解决方案来解决从自定义源恢复 NuGet 的问题?
\nwindows-services docker nuget-package-restore azure-devops azure-container-registry
docker ×9
azure ×8
azure-devops ×5
azure-cli ×1
azure-pipelines-release-pipeline ×1
gitlab-ci ×1
kubernetes ×1
node.js ×1
spring-boot ×1
terraform ×1