コンテンツにスキップ

Docker でデプロイする

Dockerfile を作成する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
FROM node:20.17.0

WORKDIR /app

# パッケージファイルをコピーする
COPY package.json package-lock.json ./

# パッケージをインストールする(--omit=devを使うとdevDependenciesを除けるが、TypeScriptがインストールされないので使わない)
RUN npm ci

# ソースコードをコピーする
COPY . ./

# ビルドする
RUN npm run build:prod

# distディレクトリをSPAとしてホスティングする(SPAで定義したパスも解決してくれる)
CMD ["npx", "serve", "-s", "dist", "-p", "3000"]

# ポートを公開する
EXPOSE 3000
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
node_modules
npm-debug.log
.env
*.log
Dockerfile
.dockerignore
.git
.gitignore
build
dist
1
2
3
4
5
6
7
8
# イメージを作成する
$ docker build -t {image-name} .

# イメージを起動する
$ docker run -p 3000:3000 {image-name}

# イメージを削除する
$ docker rmi {image-name}:latest

docker-compose での運用イメージ

開始

git cloneでソースコードを取得する。

docker-compose.ymlに記載する。

docker-compose.yml
1
2
3
4
5
6
7
8
9
version: "3"
services:
  misc-tools:
    build:
      context: misc-tools # Dockerfileやイメージのビルドに必要なファイルがあるディレクトリを指定する
      dockerfile: Dockerfile
    ports:
      - "8084:3000" # イメージのポート3000を8084にフォワーディングする
    restart: always # マシンの再起動をしたときに自動的にコンテナを起動する

docker-compose up --buildでビルドする。

更新

git pullでソースコードを更新する。

docker-compose up --buildでビルドする。