e9ec96aee7 | ||
---|---|---|
.. | ||
.devcontainer | ||
.vscode | ||
test-project | ||
.npmignore | ||
README.md |
README.md
IMPORTANT NOTE: This Template is deprecated and is no longer supported.
Dapr with C# (Community)
Summary
Develop Dapr applications using C# and .NET. Includes all needed SDKs, extensions, and dependencies.
Metadata | Value |
---|---|
Contributors | The Visual Studio Container Tools team |
Categories | Community, Frameworks |
Definition type | Docker Compose |
Works in Codespaces | No |
Container host OS support | Linux, macOS, Windows |
Container OS | Debian |
Languages, platforms | .NET Core, C#, Dapr |
Dapr Notes
When the dev container is created, the definition automatically initializes Dapr on a separate Docker network (to isolate it from Dapr instances running locally or in another Dapr dev container). This is done via the postCreateCommand
in the .devcontainer/devcontainer.json
and the DAPR_NETWORK
environment variable in the .devcontainer/docker-compose.yml
.
Using this definition
While the definition itself works unmodified, there are some tips that can help you deal with some of the defaults .NET Core uses.
Using ports
with ASP.NET Core
By default, ASP.NET Core only listens to localhost. If you use the ports
property in .devcontainer/docker-compose.yml
, the port is published rather than forwarded. Unfortunately, means that ASP.NET Core only listens to localhost is inside the container itself. It needs to listen to *
or 0.0.0.0
for the application to be accessible externally.
This container solves that problem by setting the environment variable ASPNETCORE_Kestrel__Endpoints__Http__Url
to http://*:5000
in .devcontainer/docker-compose.yml
. Using an environment variable to override this setting in the container only, which allows you to leave your actual application config as-is for use when running locally.
.devcontainer/docker-compose.yml
:
environment:
ASPNETCORE_Kestrel__Endpoints__Http__Url: http://*:5000
ports:
- 5000
If you've already opened your folder in a container, rebuild the container using the Remote-Containers: Rebuild Container command from the Command Palette (F1) so the settings take effect.
Debug Configuration
Only the integrated terminal is supported by the Remote - Containers extension. You may need to modify launch.json
configurations to include the following value if an external console is used.
"console": "integratedTerminal"
Installing Node.js or the Azure CLI
Given how frequently ASP.NET applications use Node.js for front end code, this container also includes Node.js. You can change the version of Node.js installed or disable its installation by updating these lines in .devcontainer/docker-compose.yml
.
arg:
NODE_VERSION: "14" # Set to "none" to skip Node.js installation
If you would like to install the Azure CLI update this line in .devcontainer/docker-compose.yml
:
arg:
INSTALL_AZURE_CLI: "true"
NODE_VERSION: "lts"
If you've already opened your folder in a container, rebuild the container using the Remote-Containers: Rebuild Container command from the Command Palette (F1) so the settings take effect.
Adding the definition to your folder
-
If this is your first time using a development container, please see getting started information on setting up Remote-Containers or creating a codespace using GitHub Codespaces.
-
Start VS Code and open your project folder or connect to a codespace.
-
Press F1 select and Add Development Container Configuration Files... command for Remote-Containers or Codespaces.
Note: If needed, you can drag-and-drop the
.devcontainer
folder from this sub-folder in a locally cloned copy of this repository into the VS Code file explorer instead of using the command. -
Select this definition. You may also need to select Show All Definitions... for it to appear.
-
Finally, press F1 and run Remote-Containers: Reopen Folder in Container or Codespaces: Rebuild Container to start using the definition.
Testing the definition
This definition includes some test code that will help you verify it is working as expected on your system. Follow these steps:
-
If this is your first time using a development container, please follow the getting started steps to set up your machine.
-
Clone this repository.
-
Start VS Code, press F1, and select Remote-Containers: Open Folder in Container...
-
Select the
containers/dapr-dotnetcore-latest
folder. -
After the folder has opened in the container, if prompted to restore packages in a notification, click "Restore".
-
Start the application with Dapr:
$ cd test-project $ dapr run --app-id test --app-port 5000 --dapr-http-port 3500 dotnet run
-
In a separate terminal, invoke the application via Dapr:
# Deposit funds to the account (creating the account if not exists) $ curl -d 42 -H "Content-Type: application/json" -w "\n" -X POST http://localhost:3500/v1.0/invoke/test/method/accounts/123/deposit 42 # Withdraws funds from the account $ curl -d 10 -H "Content-Type: application/json" -w "\n" -X POST http://localhost:3500/v1.0/invoke/test/method/accounts/123/withdraw 32 # Get the balance of the account $ curl -w "\n" http://localhost:3500/v1.0/invoke/test/method/accounts/123 32 $
License
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. See LICENSE.