mirror of
https://github.com/czhu12/canine.git
synced 2026-05-24 14:19:21 -05:00
71 lines
2.7 KiB
Docker
71 lines
2.7 KiB
Docker
# syntax = docker/dockerfile:1
|
|
|
|
# Development Dockerfile - installs all dependencies but expects
|
|
# the application code to be mounted as a volume for hot reloading.
|
|
|
|
ARG RUBY_VERSION=3.3.4
|
|
FROM docker.io/library/ruby:$RUBY_VERSION-slim
|
|
|
|
WORKDIR /rails
|
|
|
|
# Install system packages (runtime + build dependencies together since this is dev)
|
|
ARG KUBECTL_VERSION=v1.31.0
|
|
ARG HELM_VERSION=v3.16.3
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
RUN apt-get update -qq && \
|
|
apt-get install --no-install-recommends -y \
|
|
curl libjemalloc2 libvips postgresql-client \
|
|
build-essential git libpq-dev pkg-config \
|
|
ca-certificates gnupg && \
|
|
curl -k -LO https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl && \
|
|
chmod +x ./kubectl && mv ./kubectl /usr/local/bin/kubectl && \
|
|
rm -rf /var/lib/apt/lists /var/cache/apt/archives
|
|
|
|
# Install Helm
|
|
RUN set -eux; \
|
|
os="${TARGETOS:-linux}"; \
|
|
arch="${TARGETARCH:-amd64}"; \
|
|
url="https://get.helm.sh/helm-${HELM_VERSION}-${os}-${arch}.tar.gz"; \
|
|
curl -fsSLO "$url"; \
|
|
curl -fsSLO "${url}.sha256sum"; \
|
|
sha256sum -c "helm-${HELM_VERSION}-${os}-${arch}.tar.gz.sha256sum"; \
|
|
tar -xzf "helm-${HELM_VERSION}-${os}-${arch}.tar.gz"; \
|
|
install -m 0755 "${os}-${arch}/helm" /usr/local/bin/helm; \
|
|
rm -rf "helm-${HELM_VERSION}-${os}-${arch}.tar.gz" "helm-${HELM_VERSION}-${os}-${arch}.tar.gz.sha256sum" "${os}-${arch}"
|
|
|
|
# Install Docker CLI
|
|
RUN install -m 0755 -d /etc/apt/keyrings && \
|
|
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
|
|
chmod a+r /etc/apt/keyrings/docker.asc && \
|
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list && \
|
|
apt-get update -qq && \
|
|
apt-get install --no-install-recommends -y docker-ce-cli docker-buildx-plugin && \
|
|
rm -rf /var/lib/apt/lists /var/cache/apt/archives
|
|
|
|
# Install Node.js and Yarn
|
|
ARG NODE_VERSION=23.10.0
|
|
ARG YARN_VERSION=1.22.21
|
|
RUN ARCH=$(case "${TARGETARCH}" in amd64) echo x64 ;; arm64) echo arm64 ;; *) echo "${TARGETARCH}" ;; esac) && \
|
|
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" \
|
|
| tar -xJ --strip-components=1 -C /usr/local/ && \
|
|
npm install -g yarn@$YARN_VERSION
|
|
|
|
# Set development environment
|
|
ENV RAILS_ENV="development" \
|
|
BUNDLE_PATH="/usr/local/bundle" \
|
|
DOCKER_API_VERSION="1.44"
|
|
|
|
# Install gems
|
|
COPY Gemfile Gemfile.lock ./
|
|
RUN bundle install
|
|
|
|
# Install JS dependencies
|
|
COPY package.json yarn.lock ./
|
|
RUN yarn install
|
|
|
|
ENTRYPOINT ["/rails/bin/docker-entrypoint"]
|
|
|
|
EXPOSE 3000
|
|
CMD ["./bin/dev"]
|