mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-02 03:57:52 +00:00
- Remove the deprecated extensions - Install claude code in base image - Fix rails deprecation warning
99 lines
3.6 KiB
Docker
99 lines
3.6 KiB
Docker
ARG VARIANT="ubuntu-22.04"
|
|
|
|
FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT}
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
ARG NODE_VERSION
|
|
ARG RUBY_VERSION
|
|
ARG USER_UID
|
|
ARG USER_GID
|
|
ARG PNPM_VERSION="10.2.0"
|
|
ENV PNPM_VERSION ${PNPM_VERSION}
|
|
ENV RUBY_CONFIGURE_OPTS=--disable-install-doc
|
|
|
|
# Update args in docker-compose.yaml to set the UID/GID of the "vscode" user.
|
|
RUN if [ "$USER_GID" != "1000" ] || [ "$USER_UID" != "1000" ]; then \
|
|
groupmod --gid $USER_GID vscode \
|
|
&& usermod --uid $USER_UID --gid $USER_GID vscode \
|
|
&& chmod -R $USER_UID:$USER_GID /home/vscode; \
|
|
fi
|
|
|
|
RUN NODE_MAJOR=$(echo $NODE_VERSION | cut -d. -f1) \
|
|
&& curl -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash - \
|
|
&& apt-get update \
|
|
&& apt-get -y install --no-install-recommends \
|
|
build-essential \
|
|
libssl-dev \
|
|
zlib1g-dev \
|
|
gnupg \
|
|
tar \
|
|
tzdata \
|
|
postgresql-client \
|
|
libpq-dev \
|
|
git \
|
|
imagemagick \
|
|
libyaml-dev \
|
|
curl \
|
|
ca-certificates \
|
|
tmux \
|
|
nodejs \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
# Install rbenv and ruby for root user first
|
|
RUN git clone --depth 1 https://github.com/rbenv/rbenv.git ~/.rbenv \
|
|
&& echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc \
|
|
&& echo 'eval "$(rbenv init -)"' >> ~/.bashrc
|
|
ENV PATH "/root/.rbenv/bin/:/root/.rbenv/shims/:$PATH"
|
|
RUN git clone --depth 1 https://github.com/rbenv/ruby-build.git && \
|
|
PREFIX=/usr/local ./ruby-build/install.sh
|
|
|
|
RUN rbenv install $RUBY_VERSION && \
|
|
rbenv global $RUBY_VERSION && \
|
|
rbenv versions
|
|
|
|
# Set up rbenv for vscode user
|
|
RUN su - vscode -c "git clone --depth 1 https://github.com/rbenv/rbenv.git ~/.rbenv" \
|
|
&& su - vscode -c "echo 'export PATH=\"\$HOME/.rbenv/bin:\$PATH\"' >> ~/.bashrc" \
|
|
&& su - vscode -c "echo 'eval \"\$(rbenv init -)\"' >> ~/.bashrc" \
|
|
&& su - vscode -c "PATH=\"/home/vscode/.rbenv/bin:\$PATH\" rbenv install $RUBY_VERSION" \
|
|
&& su - vscode -c "PATH=\"/home/vscode/.rbenv/bin:\$PATH\" rbenv global $RUBY_VERSION"
|
|
|
|
# Install overmind and gh in single layer
|
|
RUN curl -L https://github.com/DarthSim/overmind/releases/download/v2.1.0/overmind-v2.1.0-linux-amd64.gz > overmind.gz \
|
|
&& gunzip overmind.gz \
|
|
&& mv overmind /usr/local/bin \
|
|
&& chmod +x /usr/local/bin/overmind \
|
|
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
|
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends gh \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
|
|
# Do the set up required for chatwoot app
|
|
WORKDIR /workspace
|
|
RUN chown vscode:vscode /workspace
|
|
|
|
# set up node js, pnpm and claude code in single layer
|
|
RUN npm install -g pnpm@${PNPM_VERSION} @anthropic-ai/claude-code \
|
|
&& npm cache clean --force
|
|
|
|
# Switch to vscode user
|
|
USER vscode
|
|
ENV PATH="/home/vscode/.rbenv/bin:/home/vscode/.rbenv/shims:$PATH"
|
|
|
|
# Copy dependency files first for better caching
|
|
COPY --chown=vscode:vscode Gemfile Gemfile.lock package.json pnpm-lock.yaml ./
|
|
|
|
# Install dependencies as vscode user
|
|
RUN eval "$(rbenv init -)" \
|
|
&& gem install bundler -N \
|
|
&& bundle install --jobs=$(nproc) \
|
|
&& pnpm install --frozen-lockfile
|
|
|
|
# Copy source code after dependencies are installed
|
|
COPY --chown=vscode:vscode . /workspace
|