Hola.
Hace unos días empecé a aprender Discourse y no encontré un Dockerfile para chips Apple/M. Así que creé el mío propio y me gustaría compartirlo con cualquiera que también quiera tener control sobre su propia imagen.
También, con esta publicación, me gustaría aprender cómo funcionan Discourse y la comunidad. Espero que encuentren útil mi publicación. Son bienvenidos a proporcionar cualquier comentario/pensamiento/pregunta sobre mi Dockerfile.
Mi Dockerfile es para chips Apple/M, pero se puede modificar fácilmente.
# 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}
# INSTALAR DEPENDENCIAS
#
# build-essential - Herramientas de compilación esenciales para compilar software
# libxslt1-dev - Biblioteca para procesamiento XSLT
# libcurl4-openssl-dev - Biblioteca para solicitudes HTTP con soporte SSL
# libksba8 - Bibliotecas para funcionalidad criptográfica
# libksba-dev - Bibliotecas para funcionalidad criptográfica
# libreadline-dev - Biblioteca para GNU readline (línea de comandos interactiva)
# libssl-dev - Biblioteca de soporte SSL/TLS
# zlib1g-dev - Biblioteca de compresión
# libsnappy-dev - Biblioteca de compresión Snappy
# libyaml-dev - Biblioteca de análisis YAML
# libpq-dev - Biblioteca cliente de PostgreSQL para conexiones a bases de datos
# postgresql-client - Cliente de PostgreSQL para interactuar con bases de datos PostgreSQL remotas
# telnet - Herramienta para probar servicios de red
# nano - Editor de texto en línea de comandos
# git - Sistema de control de versiones Git
# net-tools - Utilidades para diagnosticar y probar conexiones de red
# dnsutils - Herramientas para consultas DNS
# iputils-ping - Utilidades para hacer ping a hosts y probar conectividad
# curl - Herramienta de línea de comandos Curl para transferir datos con URLs
# wget - Herramienta de línea de comandos Wget para descargar archivos
# tzdata - Datos de zona horaria para gestionar zonas horarias
# advancecomp - Herramientas para optimizar archivos PNG y MNG
# jhead - Herramienta para mostrar y manipular datos Exif
# jpegoptim - Herramienta para optimizar archivos JPEG
# libjpeg-turbo-progs - Herramientas para optimizar archivos JPEG
# optipng - Herramienta para optimizar archivos PNG
# pngcrush - Herramienta para optimizar archivos PNG
# pngquant - Herramienta para optimizar archivos PNG
# gnupg2 - GNU Privacy Guard para comunicación segura y almacenamiento de datos
# libjpeg-dev - Archivos de desarrollo para la biblioteca JPEG
# libpng-dev - Archivos de desarrollo para la biblioteca PNG
# libtiff-dev - Archivos de desarrollo para la biblioteca TIFF
# libwebp-dev - Archivos de desarrollo para la biblioteca WebP
# libxml2-dev - Archivos de desarrollo para la biblioteca XML
# libltdl-dev - Archivos de desarrollo para la biblioteca libtool
# libfreetype6-dev - Archivos de desarrollo para la biblioteca FreeType
# liblcms2-dev - Archivos de desarrollo para la biblioteca Little CMS
# liblqr-1-0-dev - Archivos de desarrollo para la biblioteca Liquid Rescale
# libfftw3-dev - Archivos de desarrollo para la biblioteca Fastest Fourier Transform in the West
# ghostscript - Intérprete para el lenguaje PostScript y 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/*
# DIRECTORIO DE TRABAJO
#
WORKDIR /tmp
# Descargar e instalar 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 - OPTIMIZAR ARCHIVOS PNG (ARM64)
# Elige tu plataforma específica e instala el paquete requerido
# 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"]
# INSTALAR NODEJS Y PNPM Y 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
# DIRECTORIO DE TRABAJO
#
WORKDIR /app
# INSTALAR DEPENDENCIAS DE 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
# INSTALAR DEPENDENCIAS DE 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
Después de ejecutar el contenedor, puedes lanzar el proyecto usando un simple
bin/ember-cli -u
¡Feliz codificación!