ASP.NET Core + Reactの開発環境をDockerで作成する
ASP.NET Core
+React
のプロジェクトの開発環境をDocker
で作成します。
前提として、docker
とdocker-compose
はインストール済みとします。
Windows10 にdocker
とdocker-compose
をインストールする手順は以下で紹介しています。 - Windows10にWSL2をインストールする - Windows10のWSL2(Ubuntu)にDockerをインストールする
Dockerfile の作成
まずはDockerfile
を作成します。
ベースイメージはASP.NET Core 6
の公式イメージを使用します。
Dockerfile
は以下の場所に作成します。
プロジェクトが大きくなればデータベースのコンテナなども追加することになるので、ASP.NET
のソースコードを実装する開発環境はapp
コンテナとしてフォルダ分けしておきます。
- docker
- app
- Dockerfile
- app
React
の開発環境も同じコンテナ内に作成するため、node.js
もインストールします。
コンテナ内での作業フォルダとして、code
という名前のフォルダを作成しておきます。
docker
というユーザー名でユーザーを作成して、このユーザーで作業を行うようにします。
最後のdotnet dev-certs https --trust
で、開発環境でhttps
を使用できるようになります。
FROM mcr.microsoft.com/dotnet/sdk:6.0-focal
# install nodejs
RUN curl -sL https://deb.nodesource.com/setup_16.x | bash - \
&& apt-get install -y nodejs
# source
RUN mkdir /code
WORKDIR /code
# host user
ARG UID=1000
ARG GID=1000
RUN useradd -m -u ${UID} docker
USER ${UID}:${GID}
RUN dotnet dev-certs https --trust
docker-compose.yml の作成
docker-compose.yml
を作成します。
プロジェクトのルートフォルダに作成します。
- docker
- app
- Dockerfile
- app
- docker-compose.yml ← 作成
ホスト側のプロジェクトルートと、作業コンテナ内のcode
フォルダをバインドさせます。
サービス名はapp
とします。
docker-compose.yml
version: "3.2"
services:
app:
build: ./docker/app
tty: true
environment:
TZ: Asia/Tokyo
volumes:
- ./:/code
以下のコマンドでビルドが正常に行われることを確認します。
docker-compose
のコマンドはインストール方法によって-
がついたりつかなかったりします。
$ docker compose build
$ docker-compose build #環境によってはこっち
VSCode でコンテナを開く
上記で作成したapp
コンテナをVSCode
で開きます。
docker
コンテナをVSCode
で開く詳しい説明はDocker コンテナをVSCodeで開いて開発環境を構築するで紹介しています。
VSCode
で開くための設定ファイルを作成します。
プロジェクトルートに.devcontainer
という名前のフォルダを作成し、.devcontainer.json
という名前のファイルを作成します。
- .devcontainer
- .devcontainer.json ← 作成
- docker
- app
- Dockerfile
- app
- docker-compose.yml
.devcontainer.json
{
"name": "ASP.NET + React",
"dockerComposeFile": [
"../docker-compose.yml"
],
"service": "app",
"workspaceFolder": "/code",
"remoteUser": "docker",
"extensions": [
"ms-dotnettools.csharp",
"editorconfig.editorconfig",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
設定内容の説明です。
- name
- 自由に設定します。
- dockerComposeFile
- 上記で作成した
docker-compose.yml
のパスを指定します。 - service
docker-compose.yml
で指定したサービス名を指定します。- workspaceFolder
VSCode
で開いた時のプロジェクトコードとなるコンテナ内でのフォルダパスです。- remoteUser
VSCode
内(コンテナ内)でのユーザーを指定します。- extensions
VSCode
内(コンテナ内)で使用する拡張機能を指定します。
extensions
には以下を指定しています。
拡張機能は後から個別にインストールすることが可能ですが、複数人で作業をする場合などは、開発環境を合わせるために、あらかじめ拡張機能は設定しておくと便利です。
- ms-dotnettools.csharp
C#
の開発環境- editorconfig.editorconfig
editorconfig
を使用できるようにする- dbaeumer.vscode-eslint
eslint
を使用できるようにする- esbenp.prettier-vscode
prettier
を使用できるようにする
VSCode
の右下のエリアをクリックすると、メニューが表示され、「Reopen in Container」という項目があるので、それを選択すると、コンテナが起動され、コンテナの中身を VSCode で開くことができます。
確認
VSCode
でctrl+@を押すとターミナルを起動して、dotnet --version
とnode -v
のコマンドを実行し、それぞれバージョンが表示されることが確認できます。
$ dotnet --version
6.0.403
$ node -v
v16.18.1
以上で開発環境の作成は完了です。
ASP.NET Core + Reactのプロジェクトを作成するで実際にプロジェクトを作成していきます。