(针对我自己)尝试使用docker code-server,cloud9创建一个C#环境


简介

这就像本文的续篇。
使用docker构建代码服务器,然后尝试在其中创建C#环境。

代码服务器_1

创建以下目录。

1
2
ls
> Dockerfile  code-server  docker-compose.yml  projects

Dockerfile和docker-compose.yml看起来像这样。
我正在使用官方的docker-image在那里安装.net core。

<详细信息>

Dockerfile

Docker文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
FROM codercom/code-server:3.8.0

USER root

# Install wget and other module
RUN apt-get update && apt-get install -y \
    wget

# Install code-server plugin
# ※commandからのextension installは効かない?
RUN code-server --install-extension ms-dotnettools.csharp

# Install .NET5
ENV DOTNET_ROOT=/usr/share/dotnet
ENV PATH=/usr/share/dotnet:/root/.dotnet/tools:$PATH
# 以下の環境変数を変える必要あり
# 詳細1: https://github.com/dotnet/core/issues/2186
# 詳細2: https://github.com/dotnet/core/blob/master/Documentation/build-and-install-rhel6-prerequisites.md
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true

RUN wget -O dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/a0487784-534a-4912-a4dd-017382083865/be16057043a8f7b6f08c902dc48dd677/dotnet-sdk-5.0.101-linux-x64.tar.gz \
    && wget -O dotnet_runtime.tar.gz https://download.visualstudio.microsoft.com/download/pr/6bea1cea-89e8-4bf7-9fc1-f77380443db1/0fb741b7d587cce798ebee80732196ef/aspnetcore-runtime-5.0.1-linux-x64.tar.gz \
    && dotnet_sha512='398d88099d765b8f5b920a3a2607c2d2d8a946786c1a3e51e73af1e663f0ee770b2b624a630b1bec1ceed43628ea8bc97963ba6c870d42bec064bde1cd1c9edb' \
    && echo "$dotnet_sha512  dotnet.tar.gz" | sha512sum -c - \
    && dotnet_runtime_sha512='fec655aed2e73288e84d940fd356b596e266a3e74c37d9006674c4f923fb7cde5eafe30b7dcb43251528166c02724df5856e7174f1a46fc33036b0f8db92688a' \
    && echo "$dotnet_runtime_sha512  dotnet_runtime.tar.gz" | sha512sum -c - \
    && mkdir -p "/usr/share/dotnet" \
    && mkdir -p "/usr/bin/dotnet" \
    && mkdir -p "/root/.dotnet/tools" \
    && tar zxf dotnet.tar.gz -C "/usr/share/dotnet" \
    && rm dotnet.tar.gz \
    && tar zxf dotnet_runtime.tar.gz -C "/usr/share/dotnet" \
    && rm dotnet_runtime.tar.gz \
    && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
    && dotnet help

USER coder

<详细信息>

docker-compose.yml

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "3"
services:
  code:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    environment:
      PUID: 1000
      PGID: 1000
      PASSWORD: password
    ports:
      - 20000:8080
    volumes:
      - ./projects:/home/coder/project
      - ./code-server:/home/coder/.local/share/code-server

开始。

1
docker-compose up -d --build

访问

URL。
image.png

我打算在Dockerfile中使用此命令添加C#扩展。
好像不是在吗?是。
即使我从终端以相同方式命中该命令,该命令也未反映在UI中。

1
RUN code-server --install-extensions ms-dotnettools.csharp

别无选择,只能手动添加扩展名。
我提出了三个主要建议。
image.png

让我们做一个合适的项目。

1
2
3
dotnet new console -o tutorial
ls
> Program.cs  tutorial.csproj

教程文件夹下添加文件。
可以使用C#扩展名,但是它没有生成文件。
image.png

由于无法帮助,因此在常规文件创建中将其命名为Calc.cs
Program.cs和Calc.cs应具有以下内容。

<详细信息>

Calc.cs

计算

1
2
3
4
5
6
7
8
9
10
11
12
using System;

namespace tutorial2
{
    class Calc
    {
        public static double Add(double a, double b)
        {
            return a + b;
        }
    }
}

<详细信息>

Program.cs

Program.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using tutorial2;

namespace tutorial
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            var ret = Calc.Add(1, 3);
            Console.WriteLine($"Cal Result is {ret}");
        }
    }
}

尝试从

终端运行它。
image.png
我能够执行它。

调试如何?
在launch.json中指定.Net Core Launch,设置一个断点并执行它。

???在调试控制台中显示以下错误。
image.png

查看此URL,似乎调试器已获得许可,因此只能与Microsoft的IDE一起使用。
它是代码服务器问题中列出的您自己的调试器吗?似乎只有一种方法可以做到。 .. ..
此问题也已解决,因为由于许可问题而无法使用标准调试器。

代码服务器_2

由DotNetCore在

linuxserver/code-server 中的志愿者制作
既然有图像,我也将使用它。

1
2
3
git clone https://github.com/ptr727/VSCode-Server-DotNetCore.git
cd VSCode-Server-DotnetCore
docker-compose up -d # 起動

云9

作为奖励,我将在cloud9上进行尝试。

Dockerfile和docker-compose.yml看起来像这样。
我试图将DotNetCore放在linuxserver/cloud9中。

<详细信息>

Dockerfile

Docker文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
FROM linuxserver/cloud9:version-1.27.4

RUN mkdir -p /code/projects

# Install wget
RUN apt-get update \
    # Install wget
    && apt-get install -y wget

# Install .NET5
ENV DOTNET_ROOT=/usr/share/dotnet
ENV PATH=/usr/share/dotnet:/root/.dotnet/tools:$PATH
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true

RUN wget -O dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/a0487784-534a-4912-a4dd-017382083865/be16057043a8f7b6f08c902dc48dd677/dotnet-sdk-5.0.101-linux-x64.tar.gz \
    && wget -O dotnet_runtime.tar.gz https://download.visualstudio.microsoft.com/download/pr/6bea1cea-89e8-4bf7-9fc1-f77380443db1/0fb741b7d587cce798ebee80732196ef/aspnetcore-runtime-5.0.1-linux-x64.tar.gz \
    && dotnet_sha512='398d88099d765b8f5b920a3a2607c2d2d8a946786c1a3e51e73af1e663f0ee770b2b624a630b1bec1ceed43628ea8bc97963ba6c870d42bec064bde1cd1c9edb' \
    && echo "$dotnet_sha512  dotnet.tar.gz" | sha512sum -c - \
    && dotnet_runtime_sha512='fec655aed2e73288e84d940fd356b596e266a3e74c37d9006674c4f923fb7cde5eafe30b7dcb43251528166c02724df5856e7174f1a46fc33036b0f8db92688a' \
    && echo "$dotnet_runtime_sha512  dotnet_runtime.tar.gz" | sha512sum -c - \
    && mkdir -p "/usr/share/dotnet" \
    && mkdir -p "/usr/bin/dotnet" \
    && mkdir -p "/root/.dotnet/tools" \
    && tar zxf dotnet.tar.gz -C "/usr/share/dotnet" \
    && rm dotnet.tar.gz \
    && tar zxf dotnet_runtime.tar.gz -C "/usr/share/dotnet" \
    && rm dotnet_runtime.tar.gz \
    && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
    && dotnet help

<详细信息>

docker-compose.yml

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: "3"
services:
  code:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Tokyo
      - GITURL=https://github.com/linuxserver/docker-cloud9.git #optional
      - USERNAME=user #optional
      - PASSWORD=password #optional
    ports:
      - 50000:8000
    volumes:
      - ./projects:/code/projects
      - ./docker.sock:/var/run/docker.sock #optional

访问

URL。
image.png

与代码服务器一样,从终端创建一个合适的项目并尝试。
我将省略它,但是像代码服务器一样,我能够正确执行dotnet run
cloud9很好,因为它具有良好的智能和历史。

调试如何?
我可以设置一个断点,但是我放弃了,因为我不知道如何制作跑步者。 .. ..
image.png
看来AWS Cloud9可以做到,但是那一个呢?

结论

我认为网络本身是有用且方便的,但是
我觉得全面开发仍然很困难,因为即使在构建和扩展功能无法正常工作的情况下,也需要外围知识。
我认为可以由更高级别的人员来完成,但是我有点。 .. ..
目前,在Windows Visual Studio中安静地开发C#是否安全?
但是,在泊坞窗代码服务器或cloud9上有诸如python之类的文章,那么我可以毫无问题地使用它吗?
当我感到喜欢时,我想与pythonα一起尝试。