# Working with Codes This tutorial talks about how to work inside container * Update Docker Compose for dev need * Entering dev container using docker compose * Create source codes in dev container * Installing dependencies * C# `nuget` * Golang `go get` * Nodejs `npm install` * Python `pip install` * Compile and Run code Benefit of dev with docker: decouple machine from dev environment, make host clean, and dev everywhere ## Create C# website and run webapp ### Update docker-compose file in csharp service Adding following to services: ```Dockerfile working_dir: /work entrypoint: /bin/sh stdin_open: true tty: true volumes: - ./c#/src/:/work ports: - 5000:5000 ``` where: * `working_dir` set working directory in container * `volumes` set for mounting volume, which we directly mount source code into container working directory * `5000:5000`, 1st one is the port on host, 2nd one is the exposed port in container ### Build/Run dotnet image, and working it in VSCode 1. `docker-compose csharp`, where `csharp` is the service name defined in docker-compose file 2. `docker-compose run -d csharp` to start container 3. In VScode, select the running container and click **Attach Visual Studio Code**, otherwise the normal vscode don't have privilege to run it later ### Create & Run .NET webapp 1. In new created attached VSCode window `dotnet new webapp` to create .NET app source code, these source code are all `root` based 2. Modify the source code by adding `.UseUrl("http://*:5000")` to create a simple website in `Program.cs` 3. Build the webapp by `dotnet build` in attached VSCode 4. Run webapp by `dotnet run` in attached VSCode, we can now view the web in host via `localhost:5000` Further detail can be referred in: * [ASP.NET Core in a container](https://code.visualstudio.com/docs/containers/quickstart-aspnet-core)