2025년 Discourse stable 브랜치(v3.3.3) 실행용 Dockerfile (Apple/M1)

안녕하세요!

며칠 전 Discourse를 배우기 시작했는데 Apple/M 칩용 Dockerfile을 찾지 못했습니다. 그래서 직접 하나 만들어 보았고, 자신의 이미지(imag)에 대한 통제력을 유지하고자 하는 분들과 공유하고 싶습니다.

또한 이 게시물을 통해 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

즐거운 코딩 되세요!

3개의 좋아요