0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker/React初心者が半日で構築するReact環境(1週間だけ頑張る Day3of9)

Last updated at Posted at 2021-04-12

はじめに

1週間N(E)ETになった社会人の学習記録です。
前回作ったFastAPIに対して、CRUDする予定だったのですが、まずは、Reactの環境をDocker上に構築しました。

参考ページ

Google先生の教えの中から分かりやすそうな記事を参考にする。

1. Dockerfile 作成

参考ページはディレクトリ作っているぐらいだったので、不要と判断。

2. docker-compose.yml 作成

できるだけデフォルトに寄せて設定項目を減らした。

docker-compse.yml
version: "3"

services:
# 略
  # React
  web:
    container_name: "web"
    image: node:15.14.0-buster-slim
    ports:
      - 3000:3000
    environment:
      LANG: ja_JP.UTF-8
      TZ: Asia/Tokyo
      NODE_ENV: deveropment
    volumes:
      - type: bind
        source: /mnt/c/Users/Public/GitHub/prac/docker/python_fastapi/web/app
        target: /app
    command: sh -c "cd /app && yarn start"
設定項目 備考
サービス名 参考資料1のTips
image nodeのデフォルトはdebian系だったから
ports Reactのデフォルトは3000っぽい
environment 下表参照
volumes お好み設定
command
環境変数名 設定値 備考
LANG ja_JP.UTF-8 日本語2
TZ Asia/Tokyo 日本時間2
NODE_ENV deveropment Docker使うならproductionでいいかなと思ったが、「To create a production build, use yarn build.」とでるのでdeveropmentにした。2 3 4

3./4./8. appフォルダの作成とReactの起動

参考資料のまま、以下のコマンドをWSLのUbutuで実行。
結構時間がかかるけど、/appフォルダ内にReact本体が作成される。
localhost:3000にアクセスすると、Reactのロゴがぐるぐる回る。

docker-compose build
docker-compose run --rm web npx create-react-app app --template typescript
docker-compose up

5./6./7. 多分不要

5. appフォルダ内の移し替え

Dockerfile内でWORKDIRを設定していないため、PWDは/(root)のまま。
/にて「npx create-react-app app --template typescript」を実行すると、
/app 内にReact本体が展開されたので、本手順は不要だった。

6. .gitignoreの編集

/app/node_modulesはgitなどで別途管理する必要があると思う。
この本体部分が/usr/local以下とかの全体にインストールされるようなら、そういうDockerイメージを公式が出してほしい。
Dockerhubに無い時点で今回の手順を参考にした。

7. portの変更

デフォルトの3000番を使うので変更不要。

所感

鶏と卵問題のせいで、一番最初はbuildとrunとupを別にするのはだるい(まあ、DockerのCLIを立ち上げて中で打つよりは幾分マシだが)。
同じ問題はRailsの構築5 6 でも見て取れるので、仕方ないような気がする。(Railsの開発時はRails createコマンドとかはコンテナ側で実行するのかホスト側で実行するのか気になる。)
コンテナの再立ち上げの際に数分待たされるほど遅いような気がする。(production版にすれば多少マシになるのかな?)
Reactのロゴが原子核っぽいのとReactorが原子炉ってことを考えると、開発陣に原子核物理の人でもいるのかな。

免責事項(言い訳)

上記の記載は初心者の試行錯誤なので、あてにしないように!!!

  1. https://zenn.dev/mochiblock/articles/3af073ff13c6e2

  2. https://qiita.com/daikideal/items/ac36987dca0fa742e193 2 3

  3. https://qiita.com/hasehiro0828/items/f4275c9a2175864c82e4

  4. https://qiita.com/habi16/items/497abe1f80228a2b4ff9

  5. https://qiita.com/kodai_0122/items/795438d738386c2c1966

  6. https://qiita.com/chisaki0606/items/a4b42af5c4735c94057a

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?