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?

Docker環境でGithubで公開用のXcratchを構築する

0
Last updated at Posted at 2026-06-29

ずいぶん変則的な環境のもとでXcratchを構築してGithub Pagesで公開できるものを用意しようとしたときのメモです。もっとエレガントな方法があると思いますが、ひとまず自分用なので参考までに。

Docker準備

Docker

Docker desktopをインストールしておきます。

Docker Desktop

設定

docker-compose.yml

docker-compose.yml
services:
  xcratch:
    build:
      context: ./
      dockerfile: Dockerfile.local.yml
    tty: true
    # image: xcx
    container_name: xcratch-cnt
    ports:
      - "80:8601"
      - "22:22"
    volumes:
      - /Users/(username)/xcratch/xcratch:/usr/local/xcratch/xcratch

実際は上記volumesでホスト環境のディレクトリを透過的に扱えるよう複数記述している。Docker環境を再構築しても、gitからクローンしたものを永続させたいのでこういう形にしている。今回は「xcratch/xcratch」をリンクしている。

Dockerfile.local.yml

Dockerfile.local.yml
FROM ubuntu:24.04

ENV DEBIAN_FRONTEND=noninteractive
ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1

RUN apt-get update && \
    apt-get -y upgrade && \
    apt-get install -y \
        git \
        curl \
        openssl \
        openssh-server && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
    apt-get install -y nodejs && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# SSH
RUN mkdir -p /var/run/sshd

# git グローバル設定
RUN git config --global user.name "(user.name)" && \
    git config --global user.email "(user.email)"

# git 証明書生成
RUN mkdir -p /usr/local/xcratch/xcratch/.vscode && \
    openssl req -x509 -newkey rsa:2048 \
        -keyout /usr/local/xcratch/xcratch/.vscode/localhost-key.pem \
        -out /usr/local/xcratch/xcratch/.vscode/localhost.pem \
        -days 365 -nodes \
        -subj "/CN=localhost"

EXPOSE 22 8601

コンテナ作成

dockerコンテナを作成

docker-compose up -d

VScode

拡張機能

あらかじめVScodeで必要な拡張機能をインストールしておく。(Japanese Language Pack for Visual Studio Codeとか基本的なものはお好みで)

  • Docker
  • Remote Development

リモート環境に入る

Remote Explorer拡張機能も一緒にインストールされると思うので、リモートでコンテナに入る。

CleanShot 2026-06-29 at 08.32.53@2x.png

CleanShot 2026-06-29 at 08.44.56@2x.png

ターミナル

ターミナルが表示されるので(されなければ「新しいターミナル」で作成)、ホスト環境のディレクトリとリンクされたディレクトリなどでGitHubリポジトリをクローンなどして環境を構築していく。
CleanShot 2026-06-29 at 08.49.13@2x.png

Xcratch構築

リポジトリのクローン

リンクしたディレクトリに移動

cd xcratch

ややこしいが今回の例は「xcratch」ユーザーの下に「xcratch」ディレクトリを作ったので、「xcratch/xcratch」にしている。

GitHubのXcratchリポジトリのクローン

git clone -b xcratch https://github.com/xcratch/scratch-editor.git .

上記の例はオリジナルのxcratch/scratch-editorリポジトリをクローンするコマンドになっている。

しかし、実際には、xcratch/scratch-editorリポジトリをGitHub上でフォークして「xcratch」という名前に変更したリポジトリを使うのが今回の目的には合っている。そして、あらかじめホストのディレクトリとリンクした既存のディレクトリにクローンする(最後の「.」ピリオドで既存のディレクトリへのクローンができます)。

そもそもオリジナルScratchはマルチリポと呼ばれている複数のリポジトリに分割したスタイルで開発されていましたが,それを一つのリポジトリで管理するモノリポのスタイルに変更しました。
Xcratchもそれに合わせるようにモノリポ変更したのですが,それがscratch-editorリポジトリになります。この中のpackagesディレクトリにこれまで分かれていたscratch-vmやscratch-guiが収められています。

構築

cd /usr/local/xcratch/scratch-editor/
npm install
npm run build
npm run start --workspace=packages/scratch-gui

構築やり直し(リセット)

npm cache clean --force
rm -rf node_modules
rm package-lock.json

Github Pagesのための準備

mkdir -p docs
cp -r packages/scratch-gui/build/* docs/

GitHub上のSettingでGitHub Pagesを設定する。

本当はGitHub Actionを使う方法もあるのだが,そちらはまだ手を付けられていないので、ひとまずこれでやっている段階。

(未完)

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?