Docker multi-container example
Example python app using multiple docker containers
This example lives in the pulumi/examples repository. Check out just this directory to use it:
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examplesgit -C pulumi-examples sparse-checkout set docker-cs-multi-container-appcd pulumi-examples/docker-cs-multi-container-appDeploying the App#
To deploy your infrastructure, follow the steps below.
Prerequisites#
- Install Pulumi
- Install Docker and have it running
Running the App#
-
Create a new stack:
$ pulumi stack init dev -
Restore Nuget packages via
dotnet restore. -
Preview and deploy the app via
pulumi up. The preview will take a few minutes, as it builds a Docker container. A total of 19 resources are created.$ pulumi upUpdating (dev)View Live: https://app.pulumi.com/acmecorp/docker-cs-multi-container-app/dev/updates/1Type Name Status+ pulumi:pulumi:Stack docker-cs-multi-container-app-dev created+ ├─ docker:image:Image AppImage create+ ├─ docker:index:RemoteImage RedisImage create+ ├─ docker:index:Network network create+ ├─ docker:index:Container RedisContainer create+ └─ docker:index:Container AppContainer createDiagnostics:docker:image:Image (AppImage):warning: #1 [internal] load build definition from Dockerfile#1 sha256:2a9b9ce1c6c7a13dd62e06b1e5c1aa85080da181f4cbfddeb6dd474a63d7c606#1 transferring dockerfile: 37B done#1 DONE 0.4s#2 [internal] load .dockerignore#2 sha256:5f564042fd4d85d268067f7d297d69f219971e55ed723f2487806ba4934ae35f#2 transferring context: 2B done#2 DONE 0.6s#4 [internal] load metadata for mcr.microsoft.com/dotnet/sdk:5.0#4 sha256:f9541e65151d9de1e3f5d68829cd8cc3defacb0e940b12af587e2bb43b9d95ff#4 DONE 0.2s#3 [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:5.0#3 sha256:3b35130338ebb888f84ec0aa58f64d182f10a676a625072200f5903996d93690#3 DONE 0.3s#7 [build 1/6] FROM mcr.microsoft.com/dotnet/sdk:5.0@sha256:fa19559201c43bc8191c1a095670e242de80a23697d24f5a3460019958637c63#7 sha256:a78f180b26c187173ce72c04a41454a864b07f1c578b98366c363c823bcf920e#7 DONE 0.0s#9 [internal] load build context#9 sha256:d41f2745e0db96afb0603c0a7e65c8cbdcad5f61a6c1ecc508011965b60e407f#9 transferring context: 6.13kB 0.0s done#9 ...#5 [stage-1 1/3] FROM mcr.microsoft.com/dotnet/aspnet:5.0@sha256:1d75db770c7ce82b128744770271bd87dc9d119f0ef15b94cab0f84477abfaec#5 sha256:41695b46732f62acab4a09819be3290689a1f9ab564027c8c6f3b253b2c5c037#5 resolve mcr.microsoft.com/dotnet/aspnet:5.0@sha256:1d75db770c7ce82b128744770271bd87dc9d119f0ef15b94cab0f84477abfaec 0.2s done#5 DONE 0.2s#9 [internal] load build context#9 sha256:d41f2745e0db96afb0603c0a7e65c8cbdcad5f61a6c1ecc508011965b60e407f#9 DONE 0.4s#6 [stage-1 2/3] WORKDIR /app#6 sha256:27a72acfce1071e0132b0f9643f3d69079780d0beb500aee75042347cad3e978#6 CACHED#8 [build 2/6] WORKDIR /app#8 sha256:5396aeba606566a543adfe3a8046cc7e40fd726f4e8428d99a3046d8e76461b0#8 CACHED#10 [build 3/6] COPY *.csproj .#10 sha256:733ef08b5420adda83ecdf01062658bf2eef97e80799d93a0781b0610f96b21b#10 CACHED#11 [build 4/6] RUN dotnet restore#11 sha256:f0b92641af9a9b8e73abc79cc6e05515639d4ae55eea6a80c0b58b149f4f493e#11 CACHED#12 [build 5/6] COPY . .#12 sha256:6072dc4ab3fa451e5a3dbcf399be9b34862ffe9d2030c6443444ffba5827fb4c#12 CACHED#13 [build 6/6] RUN dotnet publish -c Debug -o out#13 sha256:ed8ff670b44d091f44df69a8a8ac84c627dcad2c20e8b5339bcba6828654803d#13 CACHED#14 [stage-1 3/3] COPY --from=build /app/out .#14 sha256:072309ef8f92af6ddfb7aa96772289354b90ac91103e912182f033329e865844#14 CACHED#15 exporting to image#15 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00#15 exporting layers done#15 writing image sha256:9ab0b93d5db3fdf642d00f0a3b42042e4805a63df1780f4063fdbff760252ae0 0.0s done#15 naming to docker.io/library/app done#15 DONE 0.3sOutputs:Url: "http://localhost:8080/Cache"Resources:+ 6 createdDuration: 21s -
View the endpoint URL, and run curl:
Terminal window pulumi stack outputCurrent stack outputs (1)OUTPUT VALUEurl http://localhost:3000curl $(pulumi stack output Url)I have been viewed 1 times -
Repeat the previous command multiple times to see the number of views increase.
Clean up#
To clean up resources, run pulumi destroy and answer the confirmation question at the prompt.
Related
Blog PostJul 2020
Build a Pulumi VS Code Devcontainer Environment
Blog PostDec 2020