مرحباً!
قبل بضعة أيام بدأت تعلم 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 - أداة سطر الأوامر Curl لنقل البيانات باستخدام عناوين URL
# 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
استمتع بالبرمجة!