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

Qiita CLI環境にDockerを導入するまでの全手順とハマりどころ

Posted at

この記事は実装 PR を元に、Github Copilot が記事の大枠を書いています。
内容の精査や書き直しは記事主が十分に行なっておりますが、その点ご注意ください。

概要

Qiita CLI を docker 環境で使いたい方のための手順書になっています。

目標

  • ローカルに依存しない Qiita CLI 実行環境
  • プレビューを http://localhost:8888 から直接閲覧
  • docker コンテナ内で毎回の npx qiita login を不要化

導入ステップ概要

  1. 最小構成の Dockerfile を作成(Node.js 20 ベース)
  2. docker-compose.yml でコンテナ起動・作業ディレクトリ/ポート/認証情報を定義
  3. Qiita CLI 設定ファイルの host0.0.0.0 に変更
  4. chmod 700 ~/.config/qiita-cli`
  5. 認証情報ディレクトリ(~/.config/qiita-cli)をマウントしてログイン状態維持

途中で遭遇した課題と対応

問題 原因 解決
docker コンテナ内だと毎回ログインが必要 コンテナ再生成で認証情報消失 ~/.config/qiita-cli をマウント
プレビュー URL が [::1]:8888 IPv6 ループバック + コンテナ外未公開 host: 0.0.0.0 + ports: "8888:8888"
ホストから見えない バインドアドレスが localhost qiita.config.json を修正
マウント時に permission denied ディレクトリ権限不適切 chmod 600 ~/.config/qiita-cli

追加したファイル

Dockerfile

FROM node:20
WORKDIR /workspace
COPY package.json package-lock.json* ./
RUN if [ -f package.json ]; then npm install; fi
CMD ["bash"]

docker-compose.yml

services:
  qiita-contents-dev:
    build: .
    image: node:20
    container_name: qiita-contents-dev
    working_dir: /workspace
    volumes:
      - ./:/workspace
      - ~/.config/qiita-cli:/root/.config/qiita-cli
    ports:
      - "8888:8888"
    tty: true
    stdin_open: true
    command: bash

qiita.config.json(変更)

{
  "includePrivate": false,
  "host": "0.0.0.0",
  "port": 8888
}

実行手順

1. ビルドと起動

docker compose up

2. コンテナへ入る

docker compose exec qiita-contents-dev bash

3. 初回ログイン(1 度だけ)

npx qiita login

4. プレビュー表示

npx qiita preview
# ブラウザで http://localhost:8888

5. 記事作成例

npx qiita new "hogehoge"
npx qiita preview

つまづきどころ

  • host を 0.0.0.0 にしないとホスト側ブラウザで見えない
  • 認証情報マウントディレクトリを間違える(~/.config/qiita~/.config/qiita-cli
  • 権限を 400 にすると更新できないことがある → 600 or 700 推奨
  • コンテナを再生成すると未マウントの認証情報は消える
  • IPv6 表示 ([::1]:8888) に戸惑うが localhost:8888 で OK

学び

  • 既存 CLI ツールは「認証情報の永続化」「ネットワーク公開」の 2 点を押さえるだけで Docker 化がスムーズ
  • ホスト → コンテナのアクセスは「アプリ側の bind 設定」と「Compose 側の port 公開」がセット
  • 毎回ログイン発生時は「認証ファイルはどこにあるか」を最初に確認する

まとめ

Qiita CLI を Docker 化することで、環境依存を排除し再現性の高い記事執筆フローを構築できました。
認証情報マウント・host: 0.0.0.0・ポート公開の 3 点を押さえれば同様の導入が可能です。

参考

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