Compose2containerapps
No description available
Install / Use
/learn @usepowershell/Compose2containerappsREADME
Compose2ContainerApps
This is a proof of concept to take Docker Compose files (following the spec) and converting them to YAML files that can be used to deploy Azure ContainerApps services.
Try it
If you have the just task runner, then you can run the example conversions from the /test/ directory with:
This assumes that PowerShell Core or PowerShell 7 is available.
just demo-convert
To run it with bash
just --shell sh --shell-arg "-cu" demo-convert
Work To Be Done
There are lots of things that the Compose file can express that are not supported. We should add some warnings about those configuration elements that are not going to be represented - things like volume mounts, network configurations, etc..
Things to figure out:
- [ ] A compose file can describe multiple containers and their connections. ContainerApps has two options, multiple containers on the same host (basically a k8s pod) or separate ContainerApps in the same environment with an HTTP ingress between them. Currently, the app creates separate ContainerApps deployments for each service defined.
- [X] A compose file can
exposemultiple ports or ranges (internal ingress) or define multipleportsor ranges (external ingress). ContainerApps exposes one port either internally or externally (exclusive) per ContainerApp. - [ ] Something else?
Building The App
This app should build with minimal dependencies. It's been tested with Rust 1.57.
cargo build
Running The App
The application has three mandatory parameters and two optional ones (that have default values). There are environment variables that can be provided in place of CLI arguments.
compose2containerapp --help
compose2containerapps v0.6.1
Steven Murawski <steven.murawski@microsoft.com>
Converts Docker Compose files to Azure ContainerApps yaml configuration files
USAGE:
compose2containerapp.exe [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
convert Converts a Docker Compose file into Azure ContainerApps configurations.
deploy Deploys a Docker Compose file into Azure ContainerApps
help Prints this message or the help of the given subcommand(s)
logs Retrieves Azure ContainerApps Logs
Convert
The convert subcommand takes a Docker Compose file and translates it into a YAML configuration file for Azure ContainerApps.
This YAML file can be deployed with az containerapp create --name YOURCONTAINERAPPNAME --yaml ./path/to/configuration.yaml.
compose2containerapp convert --help
compose2containerapp.exe-convert
Converts a Docker Compose file into Azure ContainerApps configurations.
USAGE:
compose2containerapp.exe convert [OPTIONS] [ARGS]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-i, --containerapps-environment-id <ContainerAppsEnvironmentId>
Resource ID for the ContainerApps environment. [env:
CONTAINERAPPS_ENVIRONMENT_ID=/subscriptions/mysubscription/resourceGroups/myresourcegroup/providers/Microsoft.Web/kubeEnvironments/myenvironment]
-l, --location <Location>
Resource group location for the ContainerApps environment. [env: LOCATION=eastus] [possible values: eastus,
westus, centralus]
-g, --resource-group <ResourceGroup>
Resource Group for the ContainerApps environment. [env: RESOURCE_GROUP=hollan_test]
--transport <Transport>
ContainerApps transport. [possible values: Auto, Http, Http2]
ARGS:
<INPUT> Path to read the Docker Compose yaml configuration file. [default: ./docker-compose.yml]
<OUTPUT> Base file name to write the Azure ContainerApps yaml configuration files. Output file name will be
prefixed with the service name. [default: containerapps.yml]
Deploy
The deploy subcommand will take a Docker Compose file and iterate over the services defined, converting them to supported ContainerApps configurations and deploying them to Azure.
If an existing Azure ContainerApps environment is not present, it will create and configure the dependencies in the targeted resource group.
compose2containerapp deploy --help
compose2containerapp.exe-deploy
Deploys a Docker Compose file into Azure ContainerApps
USAGE:
compose2containerapp.exe deploy [OPTIONS] [ARGS]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-i, --containerapps-environment-id <ContainerAppsEnvironmentId>
Resource ID for the ContainerApps environment. [env:
CONTAINERAPPS_ENVIRONMENT_ID=/subscriptions/mysubscription/resourceGroups/myresourcegroup/providers/Microsoft.Web/kubeEnvironments/myenvironment]
-n, --containerapps-environment-name <ContainerAppsEnvironmentName>
Resource Name for the ContainerApps environment. [env: CONTAINERAPPS_ENVIRONMENT=hollantest]
-l, --location <Location>
Resource group location for the ContainerApps environment. [env: LOCATION=eastus] [possible values: eastus,
westus, centralus]
-g, --resource-group <ResourceGroup>
Resource Group for the ContainerApps environment. [env: RESOURCE_GROUP=hollan_test]
--subscription-name <SubscriptionName>
Resource group location for the ContainerApps environment. [env: AZURE_SUBSCRIPTION_NAME=ca-stmuraws-demo-
test]
--transport <Transport>
ContainerApps transport. [possible values: Auto, Http, Http2]
ARGS:
<INPUT> Path to read the Docker Compose yaml configuration file. [default: ./docker-compose.yml]
<OUTPUT> Base file name to write the Azure ContainerApps yaml configuration files. Output file name will be
prefixed with the service name. [default: containerapps.yml]
Logs
The logs subcommand helps retrieve logs from Azure Container Apps. The logs are kept in Azure Log Analytics. This command simplifies what you need to know to retrieve the logs.
compose2containerapp logs --help
compose2containerapp.exe-logs
Retrieves Azure ContainerApps Logs
USAGE:
compose2containerapp.exe logs [OPTIONS]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
--name <ContainerAppName> Name of the ContainerApp to retrive logs for.
-i, --containerapps-environment-id <ContainerAppsEnvironmentId>
Resource ID for the ContainerApps environment. [env:
CONTAINERAPPS_ENVIRONMENT_ID=/subscriptions/mysubscription/resourceGroups/myresourcegroup/providers/Microsoft.Web/kubeEnvironments/myenvironment]
-n, --containerapps-environment-name <ContainerAppsEnvironmentName>
Resource Name for the ContainerApps environment. [env: CONTAINERAPPS_ENVIRONMENT=hollantest]
--number-of-results <NumberOfResults> Number of records to return. [default: 100]
-g, --resource-group <ResourceGroup>
Resource Group for the ContainerApps environment. [env: RESOURCE_GROUP=hollan_test]
-c, --log-analtyics-client-id <log_analytics_client_id>
Resource ID for the ContainerApps environment. [env: LOG_ANALYTICS_WORKSPACE_CLIENT_ID=]
Related Skills
node-connect
349.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.7kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
