你好!
几天前我开始学习 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
编码愉快!