2025年にDiscourse安定版ブランチ(v3.3.3)を起動するためのDockerfile(Apple/M1)」

こんにちは!

数日前に Discourse の学習を始めましたが、Apple/M チップ用の Dockerfile が見つかりませんでした。そのため、自分で作成し、独自のイメージを管理したいと考えている方々と共有したいと思います。

また、この投稿を通じて、Discourse とコミュニティの仕組みを学びたいと思っています。私の投稿がお役に立てば幸いです。Dockerfile に関するフィードバック、意見、質問を歓迎します。

私の Dockerfile は Apple/M チップ用ですが、簡単に変更できます。

# https://meta.discourse.org/t/install-discourse-on-ubuntu-or-debian-for-development/14727/1
# bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/main/linux)
# https://github.com/discourse/discourse/blob/main/docs/DEVELOPER-ADVANCED.md

FROM ruby:3.2-bookworm

ARG PROJECT_PATH=${PROJECT_PATH:-discourse}

# 依存関係のインストール
#
# build-essential - ソフトウェアのコンパイルに必要な基本的なビルドツール
# libxslt1-dev - XSLT 処理用のライブラリ
# libcurl4-openssl-dev - SSL サポート付き HTTP リクエスト用のライブラリ
# libksba8 - 暗号化機能用のライブラリ
# libksba-dev - 暗号化機能用のライブラリ
# libreadline-dev - GNU readline (対話型コマンドライン) 用のライブラリ
# libssl-dev - SSL/TLS サポートライブラリ
# zlib1g-dev - 圧縮ライブラリ
# libsnappy-dev - Snappy 圧縮ライブラリ
# libyaml-dev - YAML 解析ライブラリ
# libpq-dev - データベース接続用の PostgreSQL クライアントライブラリ
# postgresql-client - リモート PostgreSQL データベースとの対話用の PostgreSQL クライアント
# telnet - ネットワークサービスのテスト用ツール
# nano - コマンドラインテキストエディタ
# git - Git バージョン管理システム
# net-tools - ネットワーク接続の診断とテスト用ユーティリティ
# dnsutils - DNS クエリ用ツール
# iputils-ping - ホストへの ping および接続性テスト用ユーティリティ
# curl - URL を使用したデータ転送用 curl コマンドラインツール
# wget - ファイルダウンロード用 wget コマンドラインツール
# tzdata - タイムゾーン管理用のタイムゾーンデータ
# advancecomp - PNG および MNG ファイルの最適化用ツール
# jhead - Exif データの表示および操作用ツール
# jpegoptim - JPEG ファイルの最適化用ツール
# libjpeg-turbo-progs - JPEG ファイルの最適化用ツール
# optipng - PNG ファイルの最適化用ツール
# pngcrush - PNG ファイルの最適化用ツール
# pngquant - PNG ファイルの最適化用ツール
# gnupg2 - 安全な通信とデータストレージ用の GNU Privacy Guard
# libjpeg-dev - JPEG ライブラリの開発用ファイル
# libpng-dev - PNG ライブラリの開発用ファイル
# libtiff-dev - TIFF ライブラリの開発用ファイル
# libwebp-dev - WebP ライブラリの開発用ファイル
# libxml2-dev - XML ライブラリの開発用ファイル
# libltdl-dev - libtool ライブラリの開発用ファイル
# libfreetype6-dev - FreeType ライブラリの開発用ファイル
# liblcms2-dev - Little CMS ライブラリの開発用ファイル
# liblqr-1-0-dev - Liquid Rescale ライブラリの開発用ファイル
# libfftw3-dev - Fastest Fourier Transform in the West ライブラリの開発用ファイル
# ghostscript - PostScript 言語および PDF 用インタプリタ
#
RUN apt-get update -qq && apt-get install -y \
    build-essential \
    libxslt1-dev \
    libcurl4-openssl-dev \
    libksba8 \
    libksba-dev \
    libreadline-dev \
    libssl-dev \
    zlib1g-dev \
    libsnappy-dev \
    libyaml-dev \
    libpq-dev \
    postgresql-client \
    telnet \
    nano \
    git \
    net-tools \
    dnsutils \
    iputils-ping \
    curl \
    wget \
    tzdata \
    advancecomp \
    jhead \
    jpegoptim \
    libjpeg-turbo-progs \
    optipng \
    pngcrush \
    pngquant \
    gnupg2 \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libwebp-dev \
    libxml2-dev \
    libltdl-dev \
    libfreetype6-dev \
    liblcms2-dev \
    liblqr-1-0-dev \
    libfftw3-dev \
    ghostscript \
    && rm -rf /var/lib/apt/lists/*

# 作業ディレクトリ
#
WORKDIR /tmp

# ImageMagick 7 のダウンロードとインストール
RUN cd /tmp && wget https://imagemagick.org/download/ImageMagick.tar.gz && \
    tar xvzf ImageMagick.tar.gz && \
    cd ImageMagick-* && \
    ./configure && \
    make && \
    make install && \
    ldconfig /usr/local/lib && \
    cd .. && \
    rm -rf ImageMagick* && \
    magick --version

# OXIPNG - PNG ファイルの最適化 (ARM64)
# 特定のプラットフォームを選択し、必要なパッケージをインストールしてください
# https://github.com/shssoichiro/oxipng/releases/
RUN wget https://github.com/shssoichiro/oxipng/releases/download/v9.1.3/oxipng_9.1.3-1_arm64.deb
RUN dpkg -i oxipng_9.1.3-1_arm64.deb

SHELL ["/bin/bash", "-c"]

# NodeJS、PNPM、YARN のインストール
#
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
RUN source /root/.nvm/nvm.sh && nvm install lts/hydrogen --default

# RUN source /root/.nvm/nvm.sh && \
#     corepack enable pnpm && \
#     corepack use pnpm@9

RUN source /root/.nvm/nvm.sh && \
    npm install -g yarn

# 作業ディレクトリ
#
WORKDIR /app

# Ruby on Rails 依存関係のインストール
#
RUN gem install bundler -v 2.5.9

COPY ${PROJECT_PATH}/Gemfile /app/Gemfile
COPY ${PROJECT_PATH}/Gemfile.lock /app/Gemfile.lock

RUN bundle install --frozen

# NodeJS 依存関係のインストール
#
RUN source /root/.nvm/nvm.sh && npm install -g svgo

COPY ${PROJECT_PATH}/package.json   /app/package.json
COPY ${PROJECT_PATH}/patches        /app/patches

RUN source /root/.nvm/nvm.sh && yarn -v

コンテナを実行した後、簡単なコマンドでプロジェクトを起動できます。

bin/ember-cli -u

コーディングを楽しんでください!

「いいね!」 2