1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Day2】開発環境を構築する、、、はずでした

Posted at

はじめに

勉強とアウトプットを兼ねて、Webアプリ開発の記録を記事にしてみます。

個人のメモ的な側面が強いです。
Web開発初心者すぎて至らぬところだらけだと思いますが、暖かい目で見ていただければ幸いです。

今回は前回考えた開発環境を実際に構築していこうと思います。

↓ これまでの内容
【Day 0】アプリが完成するまで毎日投稿
【Day 1】開発環境を考える

アプリ要件

進捗管理もかねて、毎回アプリ要件を載せます。

  • 主な機能
    • 【未】アップロードされた画像に自動でInstagramのサムネイルサイズに合わせたフレームを作成する
      • フレームは白色
      • フレームにはカメラのExif情報(カメラの機種、レンズ、F値、ISO、シャッタースピード)を記載する
    • 【未】キャプションを自動生成する
      • カメラのExif情報(カメラの機種、レンズ、F値、ISO、シャッタースピード)を記載して、機種とレンズについてはハッシュタグも記載する

開発環境構築

今回の開発環境はこちらになります。
VS Codeのdevcontainerを使って、

  • フロントエンド
    • React
  • バックエンド
    • Fast API
  • 開発ツール
    • VS Code
    • Docker

この構成で開発環境を構築する方法をChat GPTに聞いてみたところ、以下のような回答と各種設定ファイルを作ってもらいました。

React(frontend)+ FastAPI(backend)をマルチコンテナで動かしつつ、DevContainerとしてVS CodeでReact開発を中心に行える構成のテンプレートです。

作ってもらった各種設定ファイルをベースに、自分が普段使っている設定なども入れて、最終的には以下のようなファイルになりました。

ディレクトリ構成

project-root/
├── .devcontainer/
│   ├── devcontainer.json
│   └── docker-compose.yml
├── frontend/
│   ├── Dockerfile
│   └── (Reactアプリのファイル)
├── backend/
│   ├── Dockerfile
│   └── (FastAPIのファイル)

devcontainer.json

{
  "name": "react-fastapi-dev",
  "dockerComposeFile": [
    "docker-compose.yml"
  ],
  "service": "frontend",
  "workspaceFolder": "/workspace",
  "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind",
  "shutdownAction": "stopCompose",
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-toolsai.jupyter",
        "esbenp.prettier-vscode",
        "dbaeumer.vscode-eslint"
      ]
    }
  }
}

docker-compose.yml

version: "3.8"

services:
  frontend:
    build:
      context: ../frontend
    volumes:
      - ../frontend:/app
    working_dir: /app
    command: npm run dev
    ports:
      - "3000:3000"
    depends_on:
      - backend

  backend:
    build:
      context: ../backend
    volumes:
      - ../backend:/app
    working_dir: /app
    command: uvicorn main:app --reload --host 0.0.0.0 --port 8000
    ports:
      - "8000:8000"

Dockerfile(フロントエンド)

FROM node:22.4.1-bookworm

WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .

Dockerfile(バックエンドエンド)

FROM python:3.1③-slim

WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .

実際にDevcaotainerを起動してみる

上記の設定ファイルを揃えた最小構成がこんな感じになりました!

image.png

この状態でDevcaotainerを起動してみます。

結果、エラーになりました。泣

[1680 ms] Start: Run: docker ps -q -a --filter label=com.docker.compose.project=react-image-generator_devcontainer --filter label=com.docker.compose.service=frontend
[1735 ms] Start: Run: docker inspect --type container 4f126d322687
[2011 ms] Start: Inspecting container
[2011 ms] Start: Run: docker inspect --type container 4f126d3226875759284da538c021d07c882c9034f7e8f825f0a86754eabece74
[2042 ms] Start: Run in container: /bin/sh
[2044 ms] Start: Run in container: uname -m
[2107 ms] Shell server terminated (code: 1, signal: null)
[2107 ms] Error response from daemon: container 4f126d3226875759284da538c021d07c882c9034f7e8f825f0a86754eabece74 is not running
[2080 ms] Start: Run in container:  (command -v getent >/dev/null 2>&1 && getent passwd 'root' || grep -E '^root|^[^:]*:[^:]*:root:' /etc/passwd || true)
[2080 ms] Stdin closed!
[2109 ms] Error: An error occurred setting up the container.
[2109 ms]     at u6 (/home/[USERNAME]/.vscode-remote-containers/dist/dev-containers-cli-0.413.0/dist/spec-node/devContainersSpecCLI.js:412:3947)
[2109 ms]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[2109 ms]     at async Y6 (/home/[USERNAME]/.vscode-remote-containers/dist/dev-containers-cli-0.413.0/dist/spec-node/devContainersSpecCLI.js:484:4015)
[2110 ms]     at async BC (/home/[USERNAME]/.vscode-remote-containers/dist/dev-containers-cli-0.413.0/dist/spec-node/devContainersSpecCLI.js:484:4957)
[2110 ms]     at async p7 (/home/[USERNAME]/.vscode-remote-containers/dist/dev-containers-cli-0.413.0/dist/spec-node/devContainersSpecCLI.js:665:202)
[2110 ms]     at async d7 (/home/[USERNAME]/.vscode-remote-containers/dist/dev-containers-cli-0.413.0/dist/spec-node/devContainersSpecCLI.js:664:14804)
[2110 ms]     at async /home/[USERNAME]/.vscode-remote-containers/dist/dev-containers-cli-0.413.0/dist/spec-node/devContainersSpecCLI.js:484:1188
[2116 ms] Exit code 1
[2119 ms] Command failed: /home/[USERNAME]/.vscode-remote-containers/bin/848b80aeb52026648a8ff9f7c45a9b0a80641e2e/node /home/[USERNAME]/.vscode-remote-containers/dist/dev-containers-cli-0.413.0/dist/spec-node/devContainersSpecCLI.js up --container-session-data-folder /tmp/devcontainers-413323ef-cf59-4a57-97ad-0d4a9ffd8a6e1748990698526 --workspace-folder /home/[USERNAME]/workspace/my_devcontainers/node/React-Image-Generator --workspace-mount-consistency cached --gpu-availability detect --id-label devcontainer.local_folder=\\wsl.localhost\Ubuntu-24.04\home\[USERNAME]\workspace\my_devcontainers\node\React-Image-Generator --id-label devcontainer.config_file=/home/[USERNAME]/workspace/my_devcontainers/node/React-Image-Generator/.devcontainer/devcontainer.json --log-level debug --log-format json --config /home/[USERNAME]/workspace/my_devcontainers/node/React-Image-Generator/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --mount type=bind,source=/run/user/1002/wayland-0,target=/tmp/vscode-wayland-e5f58f20-66eb-4d2d-a59f-f739c3cb8157.sock --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root --include-configuration --include-merged-configuration
[2119 ms] Exit code 1

エラー原因について

Chat GPTに聞いてみたところ、どうやら権限周りで引っかかっているようです。

ファイル権限がWSLとDockerで整合性が取れてない??

解決までは時間がかかりそうです。泣

おわりに

今日は開発環境を構築するつもりでしたが、うまくいかず失敗に終わってしまいました。

いきなり2つのサーバーのコンテナを作ろうとしたからうまくいかなかったのかな、、、

進捗がなくて悔しいですが、
明日からはもうちょっと構成をそぎ落としてスモールスタートで進めていきたいと思います!

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?