Docker×Vueでサクッと作る(前編)〜環境構築〜
背景
最近はReactやモバイルアプリを触ってばっかりでしたが、仕事で半年ぶりくらいにVueを触ることになったので、リハビリがてらかっこいい感じのフロントを作ってみようと思い立ちました。
(めんどくさすぎて記事を書くのが億劫なので、この思い立った勢いで書いてます。)
というわけでこの記事では、まずハロワまでサクッとやっていきたいと思います!
筆者の環境
Dockerだからあまり関係ないとは思うが一応。
- MacBook Air(M1 chip)
- OSバージョン 13.4.1
構成
フロント、バック、データベースをそれぞれ別コンテナにします。
フロントエンドはホスティングサービスを使ってバックエンドはAPIサーバ、DBはDBサーバみたいなイメージです。
Dockerの構築
今回立てるのは以下の3つのコンテナ。
分かりやすくするために名前をつけておく。
- db-container
- api-container
- web-container
(webという名前にしちゃったのはミスですね...)
ディレクトリ構成は以下。
DBコンテナとAPIコンテナ(バックエンド)は見ての通りシンプルなmySql×apachenなので割愛。
今回はvue-cliでサクッと作るところが本題です。
web-containerのdockerFile
FROM node:18.1-alpine
WORKDIR /app
RUN apk update && \
npm install -g npm && \
npm install -g vue-cli
EXPOSE 8080
docker-compose.ymlの中身
version: '3'
services:
web:
container_name: 'web-container'
build: ./docker/web
environment:
- NODE_ENV=development
volumes:
- ./web-container/app:/app
ports:
- '8080:8080'
tty: true
api:
container_name: 'api-container'
build: ./docker/api
environment:
- NODE_ENV=development
volumes:
- ./api-container/www:/var/www
- ./docker/web/apache/default.conf:/etc/apache2/sites-enabled/000-default.conf
ports:
- '8000:80'
tty: true
db:
container_name: 'db-container'
build: ./docker/db
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=local_db
- MYSQL_USER=docker_user
- MYSQL_PASSWORD=docker_pass
ports:
- '3306:3306'
volumes:
- ./docker/db/mysql/:/var/lib/mysql/
- ./docker/db/init:/docker-entrypoint-initdb.d
DBコンテナとAPIコンテナはなんでもいいのでいつものやつの使いまわしですw
- db-container(mySql)
- api-container(Laravel)
- web-container(Vue3)
以下を実行してコンテナを3つ建てる
docker-compose up --build
Vueプロジェクトを作る
今回は何も考えずに(?)サクッと作りたいので、vue-CLIを使う。
コンテナを起動したら、DockerデスクトップのUIでターミナルアイコンをクリックして、CLIを起動する。
CLIの黒い画面で以下を実行。
vue create vue-sample
この時に以下で怒られる場合は言われた通りにする。
npm uninstall -g vue-cli && npm install -g @vue/cli
再度コマンドを実行。
vue create vue-sample
なんか聞かれるので、vue3を選択する。
そして我々Macユーザが好きなyarnを選択。
以下が表示されれば成功。
# 確認
言われた通りにやれば見れる。
cd vue-sample && yarn serve
終わり
マジでサクッとできるなぁ。
ここからかっこいい画面を作っていくぞ〜。
果たして後半は出るのか!?
記事が書けますように。(がんばれ未来の自分。)
Discussion