зеркало из
1
0
Форкнуть 0

Update sample with latest definition and settings

This commit is contained in:
Chuck Lantz 2020-04-08 22:30:50 +00:00
Родитель 7b86c9b8ae
Коммит ac159ca331
6 изменённых файлов: 80 добавлений и 56 удалений

Просмотреть файл

@ -29,7 +29,7 @@ RUN apt-get update \
&& apt-get -y install --no-install-recommends apt-utils dialog 2>&1 \
#
# Verify git, process tools, lsb-release (common in install instructions for CLIs) installed
&& apt-get -y install git iproute2 procps apt-transport-https gnupg2 curl lsb-release \
&& apt-get -y install git openssh-client less iproute2 procps apt-transport-https gnupg2 curl lsb-release \
#
# Create a non-root user to use if preferred - see https://aka.ms/vscode-remote/containers/non-root-user.
&& groupadd --gid $USER_GID $USERNAME \

Просмотреть файл

@ -1,46 +1,50 @@
// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.112.0/containers/dotnetcore-3.1
{
"name": ".NET Core Sample",
"dockerFile": "Dockerfile",
"name": "C# Sample",
"build": {
"dockerfile": "Dockerfile",
"args": {
"INSTALL_NODE": "false",
"NODE_VERSION": "lts/*",
"INSTALL_AZURE_CLI": "false"
}
},
// Use 'appPort' to create a container with published ports. If the port isn't working, be sure
// your server accepts connections from all interfaces (0.0.0.0 or '*'), not just localhost.
"appPort": [5000, 5001],
// Use 'settings' to set *default* container specific settings.json values on container create.
// You can edit these settings after create using File > Preferences > Settings > Remote.
"settings": {
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
// Uncomment the next line to run commands after the container is created.
// "postCreateCommand": "dotnet restore",
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-dotnettools.csharp"
],
// [Optional] To reuse of your local HTTPS dev cert, first export it locally using this command:
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [5000, 5001],
// [Optional] To reuse of your local HTTPS dev cert, first export it locally using this command:
// * Windows PowerShell:
// dotnet dev-certs https --trust; dotnet dev-certs https -ep "$env:USERPROFILE/.aspnet/https/aspnetapp.pfx" -p "SecurePwdGoesHere"
// dotnet dev-certs https --trust; dotnet dev-certs https -ep "$env:USERPROFILE/.aspnet/https/aspnetapp.pfx" -p "SecurePwdGoesHere"
// * macOS/Linux terminal:
// dotnet dev-certs https --trust; dotnet dev-certs https -ep "${HOME}/.aspnet/https/aspnetapp.pfx" -p "SecurePwdGoesHere"
//
// Next, after running the command above, uncomment lines in the 'mounts' and 'remoteEnv' lines below,
// Next, after running the command above, uncomment lines in the 'mounts' and 'remoteEnv' lines below,
// and open / rebuild the container so the settings take effect.
//
"mounts": [
// "source=${env:HOME}${env:USERPROFILE}/.aspnet/https,target=/home/vscode/.aspnet/https,type=bind"
],
"remoteEnv": {
//Override the default HTTP endpoints - need to listen to '*' for appPort to work
"ASPNETCORE_Kestrel__Endpoints__Http__Url": "http://*:5000"
// "ASPNETCORE_Kestrel__Endpoints__Https__Url": "https://*:5001",
// "ASPNETCORE_Kestrel__Certificates__Default__Password": "SecurePwdGoesHere",
// "ASPNETCORE_Kestrel__Certificates__Default__Path": "/home/vscode/.aspnet/https/aspnetapp.pfx"
// "ASPNETCORE_Kestrel__Certificates__Default__Path": "/home/vscode/.aspnet/https/aspnetapp.pfx",
},
// Comment out the next line to run as root
"remoteUser": "vscode",
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "dotnet restore",
// Add the IDs of extensions you want installed when the container is created in the array below.
"extensions": [
"ms-vscode.csharp"
]
// Comment out to connect as root user. See https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode"
}

3
.vscode/settings.json поставляемый
Просмотреть файл

@ -1,3 +0,0 @@
{
"razor.disabled": true
}

Просмотреть файл

@ -10,18 +10,18 @@ Follow these steps to open this sample in a container:
1. If this is your first time using a development container, please follow the [getting started steps](https://aka.ms/vscode-remote/containers/getting-started).
2. To use this repository, you can either open a locally cloned copy of the code:
- Clone this repository to your local filesystem.
- Press <kbd>F1</kbd> and select the **Remote-Containers: Open Folder in Container...** command.
- Select the cloned copy of this folder, wait for the container to start, and try things out!
Or open the repository in an isolated Docker volume:
2. To use this repository, you can either open the repository in an isolated Docker volume:
- Press <kbd>F1</kbd> and select the **Remote-Containers: Try a Sample...** command.
- Choose the ".NET Core" sample, wait for the container to start and try things out!
> **Note:** Under the hood, this will use **Remote-Containers: Open Repository in Container...** command to clone the source code in a Docker volume instead of the local filesystem.
Or open a locally cloned copy of the code:
- Clone this repository to your local filesystem.
- Press <kbd>F1</kbd> and select the **Remote-Containers: Open Folder in Container...** command.
- Select the cloned copy of this folder, wait for the container to start, and try things out!
3. If you want to enable **HTTPS**, see [enabling HTTPS](#enabling-https) to reuse your local development cert in the container.
## Things to try
@ -49,13 +49,8 @@ Some things to try:
5. **Forward another port:**
- Stop debugging and remove the breakpoint.
- Open `launch.json`
- Add `"ASPNETCORE_Kestrel__Endpoints__Http__Url": "http://*:9000",` to the `"env"` property.
> **Note:** By default, ASP.NET Core only listens to localhost. If you use the `appPort` property in `.devcontainer/devcontainer.json`, the port is [published](https://docs.docker.com/config/containers/container-networking/#published-ports) rather than forwarded. Unfortunately, this means that ASP.NET Core only listens to localhost inside the container itself, not externally. It needs to listen to `*` or `0.0.0.0` instead to resolve the issue.
>
> This container solves that problem by setting the environment variable `ASPNETCORE_Kestrel__Endpoints__Http__Url` to `http://*:5000` in `.devcontainer/devcontainer.json`. By using an environment variable to override this setting in the container only, you can leave your actual application config as-is for use when running locally.
- Open `appsettings.Development.json`
- Update `"Url": "http://localhost:5000"` to `"Url": "http://localhost:9000"`.
- Press <kbd>F5</kbd> to launch the app in the container.
- Press <kbd>F1</kbd> and run the **Forward a Port** command.
- Select port 9000.
@ -63,35 +58,47 @@ Some things to try:
### Enabling HTTPS
To enable HTTPS for this sample, you can mount an exported copy of your local dev certificate. First, export it using the following command:
To enable HTTPS for this sample, you can mount an exported copy of your local dev certificate.
**Windows PowerShell**
1. Enable HTTPS in the sample by updating the `env` property in `.vscode/launch.json` as follows:
```powershell
dotnet dev-certs https --trust; dotnet dev-certs https -ep "$env:USERPROFILE/.aspnet/https/aspnetapp.pfx" -p "SecurePwdGoesHere"
```
```json
"env": {
"ASPNETCORE_ENVIRONMENT": "HttpsDevelopment"
}
```
**macOS/Linux terminal**
2. Now, locally export the HTTPS certificate using the following command:
```powershell
dotnet dev-certs https --trust; dotnet dev-certs https -ep "${HOME}/.aspnet/https/aspnetapp.pfx" -p "SecurePwdGoesHere"
```
**Windows PowerShell**
Next, update the following properties in `.devcontainer/devcontainer.json`:
```powershell
dotnet dev-certs https --trust; dotnet dev-certs https -ep "$env:USERPROFILE/.aspnet/https/aspnetapp.pfx" -p "SecurePwdGoesHere"
```
**macOS/Linux terminal**
```powershell
dotnet dev-certs https --trust; dotnet dev-certs https -ep "${HOME}/.aspnet/https/aspnetapp.pfx" -p "SecurePwdGoesHere"
```
3. Next, update the following properties in `.devcontainer/devcontainer.json`:
```json
"mounts": [
"source=${env:HOME}${env:USERPROFILE}/.aspnet/https,target=/home/vscode/.aspnet/https,type=bind"
],
"remoteEnv": {
"ASPNETCORE_Kestrel__Endpoints__Http__Url": "http://*:5000",
"ASPNETCORE_Kestrel__Endpoints__Https__Url": "https://*:5001",
"ASPNETCORE_Kestrel__Certificates__Default__Password": "SecurePwdGoesHere",
"ASPNETCORE_Kestrel__Certificates__Default__Path": "/home/vscode/.aspnet/https/aspnetapp.pfx"
}
```
Finally, rebuild the container using the **Remote-Containers: Rebuild Container** command from the Command Palette (<kbd>F1</kbd>) if you've already opened your folder in a container so the settings take effect.
> **Note:** See [here for an alternative](https://github.com/microsoft/vscode-dev-containers/blob/v0.42.0/containers/dotnetcore-2.1/README.md#enabling-https-in-aspnet-core) when using an extension version below v0.98.0 as the `forwardPorts` property is not available.
4. Finally, rebuild the container using the **Remote-Containers: Rebuild Container** command from the Command Palette (<kbd>F1</kbd>) if you've already opened your folder in a container so the settings take effect.
Next time you debug using VS Code (<kbd>F5</kbd>), you'll be able to use HTTPS! Note that you will need to specifically navigate to `https://localhost:5001` to get the certificate to work (**not** `https://127.0.0.1:5001`).
## Contributing

Просмотреть файл

@ -1,4 +1,11 @@
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5000"
}
}
},
"Logging": {
"LogLevel": {
"Default": "Debug",

Просмотреть файл

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}