148 lines
4.6 KiB
Docker
148 lines
4.6 KiB
Docker
# Primary image
|
|
FROM mcr.microsoft.com/devcontainers/base:debian-12
|
|
|
|
# apt caching & install packages
|
|
RUN rm -f /etc/apt/apt.conf.d/docker-clean && \
|
|
echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
|
|
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt-get update && \
|
|
apt-get install --no-install-recommends --no-install-suggests -qqy \
|
|
abiword \
|
|
autoconf \
|
|
build-essential \
|
|
ca-certificates \
|
|
curl \
|
|
ffmpeg \
|
|
ffmpegthumbnailer \
|
|
file \
|
|
gnupg \
|
|
iputils-ping \
|
|
libblas-dev \
|
|
libdb-dev \
|
|
libffi-dev \
|
|
libgdbm-dev \
|
|
libgdbm6 \
|
|
libgmp-dev \
|
|
libicu-dev \
|
|
liblapack-dev \
|
|
libncurses5-dev \
|
|
libpq-dev \
|
|
libreadline6-dev \
|
|
libreoffice \
|
|
libsqlite3-dev \
|
|
libssl-dev \
|
|
libyaml-dev \
|
|
patch \
|
|
pdftohtml \
|
|
pkg-config \
|
|
rustc \
|
|
uuid-dev \
|
|
watchman \
|
|
zlib1g-dev
|
|
|
|
# Install vips dependencies
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt-get update && \
|
|
apt-get install --no-install-recommends --no-install-suggests -qqy \
|
|
automake \
|
|
gtk-doc-tools \
|
|
gobject-introspection \
|
|
libgirepository1.0-dev \
|
|
libglib2.0-dev \
|
|
libexpat1-dev \
|
|
libjpeg-dev \
|
|
libpng-dev \
|
|
libtiff5-dev \
|
|
libwebp-dev \
|
|
libheif-dev \
|
|
libexif-dev \
|
|
liblcms2-dev \
|
|
libxml2-dev \
|
|
libfftw3-dev \
|
|
liborc-0.4-dev \
|
|
libcgif-dev \
|
|
libjxl-dev \
|
|
libopenjp2-7-dev \
|
|
meson \
|
|
ninja-build
|
|
|
|
|
|
# Install imagemagick from source
|
|
RUN cd /tmp && \
|
|
wget -qO- https://imagemagick.org/archive/releases/ImageMagick-7.1.2-1.tar.xz | tar -xJ && \
|
|
cd ImageMagick-7.1.2-1 && \
|
|
./configure && \
|
|
make -j$(nproc) && \
|
|
make install && \
|
|
ldconfig && \
|
|
cd / && \
|
|
rm -rf /tmp/ImageMagick-7.1.2-1*
|
|
|
|
# Install vips from source
|
|
RUN cd /tmp && \
|
|
wget -qO- https://github.com/libvips/libvips/releases/download/v8.17.1/vips-8.17.1.tar.xz | tar -xJ && \
|
|
cd vips-8.17.1 && \
|
|
meson setup build --prefix=/usr/local -Dcgif=enabled && \
|
|
cd build && \
|
|
ninja && \
|
|
ninja install && \
|
|
ldconfig && \
|
|
cd / && \
|
|
rm -rf /tmp/vips-8.17.1*
|
|
|
|
# Install postgres 15 client
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
sudo install -d /usr/share/postgresql-common/pgdg && \
|
|
curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc && \
|
|
sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' && \
|
|
sudo apt update && \
|
|
sudo apt-get install --no-install-recommends --no-install-suggests -qqy \
|
|
postgresql-client-17
|
|
|
|
# Install & configure delta diff tool
|
|
RUN wget -O- https://github.com/dandavison/delta/releases/download/0.18.2/git-delta_0.18.2_amd64.deb > /tmp/git-delta.deb && \
|
|
sudo dpkg -i /tmp/git-delta.deb && \
|
|
rm /tmp/git-delta.deb
|
|
|
|
RUN git config --system core.pager "delta" && \
|
|
git config --system interactive.diffFilter "delta --color-only" && \
|
|
git config --system delta.navigate "true" && \
|
|
git config --system delta.dark "true" && \
|
|
git config --system delta.side-by-side "true" && \
|
|
git config --system merge.conflictstyle "zdiff3" && \
|
|
git config --system core.editor "cursor --wait" && \
|
|
git config --system diff.algorithm "histogram" && \
|
|
git config --system diff.colorMoved "default"
|
|
|
|
# Install ruby
|
|
USER vscode
|
|
RUN git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
|
ENV PATH="/home/vscode/.rbenv/bin:/home/vscode/.rbenv/shims:$PATH"
|
|
RUN echo 'eval "$(rbenv init - --no-rehash bash)"' >> ~/.bashrc
|
|
RUN git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
|
|
RUN rbenv install 3.4.4 && \
|
|
rbenv global 3.4.4
|
|
|
|
ENV RAILS_ENV development
|
|
|
|
# Pre install gems to speed up container startup
|
|
USER root
|
|
RUN mkdir -p /tmp/bundle-install-cache && \
|
|
chown -R vscode:vscode /tmp/bundle-install-cache
|
|
WORKDIR /tmp/bundle-install-cache
|
|
USER vscode
|
|
COPY Gemfile.lock Gemfile ./
|
|
COPY gems/has_aux_table ./gems/has_aux_table
|
|
RUN BUNDLE_FROZEN=true MAKE="make -j$(nproc)" bundle install --jobs $(nproc)
|
|
|
|
# install exo
|
|
RUN curl -sL https://exo.deref.io/install | bash
|
|
ENV PATH "/home/vscode/.exo/bin:$PATH"
|
|
|
|
# install just (command runner)
|
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | sudo bash -s -- --to /usr/local/bin
|