Привет!
Несколько дней назад я начал изучать Discourse и не нашёл Dockerfile для чипов Apple M. Поэтому я создал свой собственный и хочу поделиться им с теми, кто также хочет контролировать свой образ.
Также с помощью этого поста я хочу узнать, как работает 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 - Библиотека для HTTP-запросов с поддержкой SSL
# 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 - Утилиты для пинга хостов и проверки связности
# curl - Инструмент командной строки для передачи данных по URL
# 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
Удачной работы!