Closed9

Vite + Vue3 + Docker  環境構築 手順

オクトオクト

準備

まずは必要な作業ディレクトリとファイルを作成する。

terminal
~/docker_tutorial
❯ mkdir DockerVite && cd DockerVite

~/docker_tutorial/DockerVite
❯ touch Dockerfile docker-compose.yml                              

~/docker_tutorial/DockerVite
❯ ls    
Dockerfile         docker-compose.yml
オクトオクト

Dockerファイルの構築

Dockerfile
# slim系のnodeから構築することを定義
FROM node:16.17.1-bullseye
# コンテナ内の作業ディレクトリを作成
WORKDIR /app
# パッケージ一覧(インデックス)を更新
RUN apt update \
    && yarn install
# ポート番号5173でコンテナを公開
EXPOSE 5173

Docker Hubには3種類のnodeイメージがあるらしい。

  1. node:<version>
  2. node:<version>-alpine
  3. node:<version>-slim

それぞれの特徴は以下で確認できる。
https://hub.docker.com/_/node

▼ 通常イメージとAlpineは安易に使用しない方が良いらしい。
https://zenn.dev/jrsyo/articles/e42de409e62f5d

オクトオクト

docker-compose.ymlの構築

docker-compose.yml
version: '3.9'  # docker-composeのバージョン選択
services:
  frontend:  # サービス名
    build:  # Dockerfileの設定
      context: .  # Dockerfileを置いているディレクトリ
      dockerfile: Dockerfile  # Dockerfileのファイル名
    working_dir: /app  # 作業ディレクトリを指定
    volumes:
      - ./:/app:cached
    tty: true  # コンテナを正常終了するのを防ぐ
    ports:
      - '5173:5173'  # 公開用のポート指定。ホスト側:コンテナ側
    command: yarn dev --host  # viteの実行コマンド

volumescachedオプションについて
https://qiita.com/koshigoe/items/52749db8836b4e3fbfc4

ttyについて
https://zenn.dev/hohner/articles/43a0da20181d34

オクトオクト

ビルド

以下を実行して、エラーを吐かなければ成功。

terminal
$ docker-compose build
Building frontend
[+] Building 82.3s (8/8) FINISHED                                                                                                                                                                           
 => [internal] load build definition from Dockerfile                                                                                                                                                   0.0s
 => => transferring dockerfile: 109B                                                                                                                                                                   0.0s
[...]
 => => naming to docker.io/library/dockervite_frontend                                                                                                                                                 0.0s 

オクトオクト

Viteでプロジェクト作成

以下を実行。

terminal
# docker-compose run [サービス名] yarn create vite
$ docker-compose run frontend yarn create vite
Creating network "dockervite_default" with the default driver
Creating dockervite_frontend_run ... done
yarn create v1.22.19
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...

success Installed "create-vite@3.1.0" with binaries:
      - create-vite
      - cva
✔ Project name: … docker-vite
✔ Select a framework: › Vue
✔ Select a variant: › JavaScript

Scaffolding project in /app/docker-vite...

Done. Now run:

  cd docker-vite
  yarn
  yarn dev

Done in 51.57s.

$ ls
Dockerfile         docker-compose.yml docker-vite

オクトオクト

Dockerfile / docker-compose.yml の追加記述

まずは、Dockerfile

Dockerfile
FROM node:16.17.1-bullseye
WORKDIR /app
# 以下を追加する
COPY vite-app/ ./  # プロジェクトのコピー
###
RUN apt update \
  && yarn install
EXPOSE 5173

次にdocker-compose.yml

docker-compose.yml
version: '3.9'
services:
  frontend:
    build:
      context: .
      dockerfile: Dockerfile
    working_dir: /app
    volumes:
      # 以下をviteのプロジェクト名に変更する
      - ./vite-app:/app:cached
      # 以下を追加する
      - node_modules:/app/node_modules  # 特定のパスを独立した名前付きボリュームとして定義
      ###
    tty: true
    ports:
      - '5173:5173'
    command: yarn dev --host
# 以下を追加する
volumes:  # 名前付きボリュームの設定
  node_modules:

vite.config.jsをいじって--hostを実現できる
https://qiita.com/generonishimura/items/88742085294bd0b234a6#viteの起動

オクトオクト

コンテナを立ち上げる

terminal
$ docker-compose up

frontend_1  |   VITE v3.1.6  ready in 204 ms
frontend_1  | 
frontend_1  |   ➜  Local:   http://localhost:5173/
frontend_1  |   ➜  Network: http://172.18.0.2:5173/

http://localhost:5173/ にアクセスして動作確認。

このスクラップは2022/11/07にクローズされました