NO IMAGE

【React】DockerでReact開発環境を作る

NO IMAGE

ここではDockerを使って、コンテナ上にReactの開発環境を構築した方法と注意点を紹介します。React自体の説明は省くので、詳しくは公式チュートリアル等をご覧あれ。

構築に当たっては、「DockerでReact+TypeScript環境を作ってみた~formatterを添えて~ | Logical Studio Blog」を参考にしました。

Contents

セットアップ~create-react-appまで

  • setup_docker.sh: docker 導入用
#!/bin/shecho "Dockerインストール"# 参考(<https://docs.docker.com/install/linux/docker-ce/ubuntu/)>sudo apt-get -y remove docker docker-engine docker.io containerd runcsudo apt-get -y update# 公開鍵の追加sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "公開鍵"sudo apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-commonsudo curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo apt-key add -sudo apt-key fingerprint 0EBFCD88sudo add-apt-repository "deb [arch=amd64] <https://download.docker.com/linux/ubuntu> $(lsb_release -cs) stable"sudo apt-get -y updatesudo apt-get -y install docker-ce docker-ce-cli containerd.iosudo apt-cache madison docker-ceecho "Dockerデーモン起動"sudo systemctl start dockerecho "Dockerデーモンの自動起動設定の有効化"sudo systemctl enable dockerecho "Docker Composeインストール"# 参考(<https://docs.docker.com/compose/install/)>sudo apt-get -y updatesudo curl -L <https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname> -s`-`uname -m` -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composeecho "Docker非sudo対応"sudo groupadd dockersudo systemctl restart dockersudo gpasswd -a $USER dockerecho "inotifyの監視ファイル数上限値を増加させる"echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.confsudo sysctl -pecho "Docker非sudo対応の反映のためにシステム再起動"sudo reboot
  • docker-compose.yml
version: "3.8" #docker composerのバージョンの指定services:  front: build: ./ #buildするdockerfileの位置 container_name: node #作成するdockerコンテナの名前 working_dir: /home/front #docker内に入った時の初期パスの指定 ports:- 3000:3000 #コンテナにバインドするポートの指定(左:自分のPCポート、右:dookerコンテナのポート) tty: true #コンテナが勝手に終了しないための設定 stdin_open: true #標準入出力とエラー出力をコンテナに結びつける設定 environment:- CHOKIDAR_USEPOLLING=true #ホットリロードを行う設定
  • Dockerfile:参考記事からちょっとアレンジ
FROM node:16.14.0-busterENV NODE_VERSION 14.18.1ARG HOME_DIR=/home/frontWORKDIR ${HOME_DIR}COPY ./front ${HOME_DIR}EXPOSE 3000# コンテナが勝手に終了してしまわないよう設定ENV CI=true

これでコンテナを立ち上げてみます。

$ docker-compose build...Successfully tagged sample-react-1_front:latest$ docker-compose up -dCreating network "sample-react-1_default" with the default driverCreating node ... done

コンテナの中に入ってcreate-react-app。

$ docker exec -it node bashroot@97121bf2f357:/home/front# lsroot@97121bf2f357:/home/front# npx create-react-app . --template typescript --use-npm...We suggest that you begin by typing:  cd /home/front  npm startHappy hacking!

ここでの注意点(そして、まだよくわかっていないところ)は、docker-compose.ymlのvolumesでローカルにマウントしようとするとsh: 1: create-react-app: Permission deniedのエラーが出る点です。本当はローカルに置いたDockerfile等と合わせてgit管理したかったものの、今回はコンテナ上のReactソースとローカルのDocker設定ファイルはリポジトリを分けました。

コンテナに接続して作業する

今回はMicrosoftが出しているVScodeの拡張機能、Remote -Containersを使ってコンテナに接続しました。以下のように、コンテナのところを右クリックして出てくるメニューの上から3番目、”Attach Visual Studio Code”をクリックすることでコンテナにVScodeで接続できます。

レッツ接続。

コンテナ上の開発ディレクトリに入ったら、npm startでサーバを起動します。docker-compose.ymlで、Dockerコンテナの3000ポートはホストの3000ポートとフォワーディング設定していたので、このサーバにはホスト側でブラウザを立ち上げ、localhost:3000のURLで接続できます。

$ npm start
reactマークがぐーるぐる

参考

NO IMAGE
最新情報をチェックしよう!