Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

dotfilesをサクッとプレビューするためにDockerイメージを作ろう

「他人のdotfilesをちょっと試してみたいけど、環境を汚したくないからやらない」、こういうこと、めっちゃありますよね。僕はあるので進めますね。コレを解消できないかと考えてたんですが、「Dockerイメージをビルドすれば良いじゃん」って気づいたのでやり方の紹介です。

dotfilesをプレビューする

実際にDockerイメージを作ったので、以下のコマンドで僕のdotfilesをプレビューできます↓

docker run -it --rm ghcr.io/pandanoir/dotfiles-preview

DockerイメージをGitHub Actionsでビルドする

GitHubにはコンテナレジストリがあります (ghcr.io)。GH Actionsでここにビルド&プッシュすればGitHubで全部完結させられます。フローはこんな感じ↓

on:
  push:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: docker/setup-buildx-action@v3 # マルチプラットフォーム向けビルドのためにbuildxをセットアップ
      - uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - uses: docker/build-push-action@v6
        with:
          push: true
          file: ./preview.dockerfile
          platforms: linux/amd64,linux/arm64
          tags: ghcr.io/${{ github.repository_owner }}/dotfiles-preview:latest

あとはpreview.dockerfileを書けばOK

# neovimでlanguage serverのインストール時にnpmを使いたいのでnodeイメージを使用
FROM node:24-slim

# 自分の環境で使ってる各種ツールをインストール
RUN apt update && \
    apt install -y zsh git curl fzf unzip gcc && \
    rm -rf /var/lib/apt/lists/*
RUN curl -sS https://starship.rs/install.sh | sh -s -- --yes
RUN curl -fsSL https://deno.land/x/install/install.sh | sh

# 最新ビルドのneovimをインストール
RUN if [ "$(uname -m)" = "x86_64" ]; then ARCH="linux-x86_64"; else ARCH="linux-arm64"; fi && \
    curl -LO https://github.com/neovim/neovim/releases/download/stable/nvim-${ARCH}.tar.gz && \
    tar xzf nvim-${ARCH}.tar.gz && \
    rm nvim-${ARCH}.tar.gz && \
    mkdir -p /root/local && mv nvim-${ARCH} /root/local/nvim

COPY . /root/dotfiles
WORKDIR /root/dotfiles

RUN ./install.sh

CMD ["/bin/zsh"]

おわり

みんなもDockerイメージを作って配布してくれ。いっぱい試したいので。