(자신 용) docker + code-server, cloud9에서 C# 환경 만들기
18296 단어 docker-composecode-server도커cloud9
소개
이 기사 의 계속 같은 느낌입니다.
docker로 code-server를 구축하고 거기에서 C# 환경을 만들 수 있는지 시도해 보겠습니다.
code-server_1
다음과 같은 디렉토리를 만듭니다.
ls
> Dockerfile code-server docker-compose.yml projects
Dockerfile과 docker-compose.yml은 이런 느낌입니다.
공식 docker-image를 사용하여 거기에 .net core를 install하고 있습니다.
Dockerfile
Dockerfile
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
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
시작합니다.
docker-compose up -d --build
URL에 액세스합니다.
Dockerfile의이 명령으로 C# 확장을 넣으려고합니다.
아무것도 들어 있지 않은 것 같아? 입니다.
터미널에서처럼 명령을 두드려도 UI에게 반영되지 않았습니다.
RUN code-server --install-extensions ms-dotnettools.csharp
어쩔 수 없기 때문에 확장 기능은 수동으로 넣습니다.
주였던 3개를 넣어 보았습니다.
적당한 프로젝트를 만들어 보겠습니다.
dotnet new console -o tutorial
ls
> Program.cs tutorial.csproj
tutorial 폴더 아래에 파일을 추가합니다.
C# extensions를 사용할 수 있을 것 같은 분위기가 있습니다만 파일의 생성은 해 주지 않았습니다.
어쩔 수 없기 때문에 통상의 파일 작성으로 이름을
Calc.cs
로 합니다.Program.cs와 Calc.cs를 다음 내용으로 만듭니다.
Calc.cs
Calc.cs
using System;
namespace tutorial2
{
class Calc
{
public static double Add(double a, double b)
{
return a + b;
}
}
}
Program.cs
Program.cs
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}");
}
}
}
터미널에서 실행해 봅니다.
실행할 수 있었습니다.
디버깅은 어떻습니까?
launch.json에 .Net Core Launch를 지정하고 중단 점을 두고 실행해보십시오.
??? 다음과 같은 오류가 DEBUG CONSOLE에 표시됩니다.
이 URL 를 살펴보면 디버거는 Microsoft의 IDE가 아니면 작동하지 않는 라이센스가 되어 있는 것 같습니다.
code-server에서의 issue 에도 거론되고 있어 자체 디버거? 로 하는 방법 밖에 없는 것 같습니다. . .
issue도 라이센스의 문제에 의해 표준 디버거는 사용할 수 없다고 하는 것으로 닫혀 있었습니다.
code-server_2
linuxserver/code-server
에 DotNetCore를 넣어 유지하는 쪽이 만들었다이미지 가 있었으므로 그쪽도 타고 둡니다.
git clone https://github.com/ptr727/VSCode-Server-DotNetCore.git
cd VSCode-Server-DotnetCore
docker-compose up -d # 起動
cloud9
덤으로 cloud9에서도 시도해 보겠습니다.
Dockerfile과 docker-compose.yml은 이런 느낌입니다.
linuxserver/cloud9
에 DotNetCore를 넣는 형태로 해 보았습니다.Dockerfile
Dockerfile
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
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에 액세스합니다.
code-server 마찬가지로 적당한 프로젝트를 터미널에서 만들어 시험해 봅니다.
할애합니다만, code-server 처럼
dotnet run
까지 제대로 할 수 있었습니다.cloud9는 인텔리센스나 히스토리가 제대로 효과가 있기 때문에 좋네요.
디버깅은 어떻습니까?
브레이크 포인트는 둘 수 있지만 Runner를 어떻게 만들지 모르겠다고 단념했습니다. . .
AWS Cloud9 쪽이라고 할 수 있는 것 같습니다만 이쪽이면 어떨까요?
결론
web-ide 자체는 유용하고 편리하다고 생각합니다.
구축 후에도 주변 지식이 필요하거나 확장 기능이 잘 되지 않는 등으로 본격적인 개발은 아직 어려울 것 같은 인상을 받았습니다.
보다 레벨이 높은 사람이라고 할 수 있겠지만 나에서는 조금. . .
현재는 어른스럽고 windows+visual studio에서 C# 개발을 하는 것이 역시 무난할까요?
다만, docker+code-server or cloud9로 python라든지의 기사는 얼마 안되어 있으므로 그쪽이라면 문제 없게 사용할 수 있을까요.
마음이 가면 python + α로 시도하고 싶었습니다.
Reference
이 문제에 관하여((자신 용) docker + code-server, cloud9에서 C# 환경 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mototoke/items/833c9be596b81a7da943텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)