79 lines
2.5 KiB
Docker
79 lines
2.5 KiB
Docker
# NAME: discourse/discourse_dev
|
|
# VERSION: release
|
|
|
|
ARG from_tag=slim
|
|
|
|
FROM discourse/base:$from_tag AS repo-fetcher
|
|
WORKDIR /repo
|
|
RUN chown discourse .
|
|
USER discourse
|
|
RUN git clone https://github.com/discourse/discourse . --depth 1
|
|
|
|
FROM discourse/base:$from_tag
|
|
|
|
#LABEL maintainer="Sam Saffron \"https://twitter.com/samsaffron\""
|
|
|
|
# Remove the code added on base image
|
|
RUN rm -rf /var/www/*
|
|
|
|
# Give discourse user no-passwd sudo permissions (for bundle install)
|
|
ADD sudoers.discourse /etc/sudoers.d/discourse
|
|
|
|
RUN sudo -u discourse bundle config set --global path /home/discourse/.bundle/gems
|
|
|
|
# Add user-install ruby gems to PATH
|
|
RUN echo 'PATH="$(ruby -r rubygems -e "puts Gem.user_dir")/bin:$PATH"' >> /home/discourse/.profile
|
|
|
|
# get redis going
|
|
ADD redis.template.yml /pups/redis.yml
|
|
RUN /pups/bin/pups /pups/redis.yml
|
|
|
|
RUN locale-gen en_US.UTF-8
|
|
ENV LANG=en_US.UTF-8 \
|
|
LANGUAGE=en_US:en \
|
|
LC_ALL=en_US.UTF-8 \
|
|
RUSTUP_HOME=/usr/local/rustup \
|
|
CARGO_HOME=/usr/local/cargo \
|
|
PATH=/usr/local/cargo/bin:$PATH
|
|
|
|
# get postgres going
|
|
ADD postgres.template.yml /pups/postgres.yml
|
|
RUN LANG=en_US.UTF-8 /pups/bin/pups /pups/postgres.yml
|
|
|
|
# add dev databases
|
|
ADD postgres_dev.template.yml /pups/postgres_dev.yml
|
|
RUN /pups/bin/pups /pups/postgres_dev.yml
|
|
|
|
# move default postgres_data out of the way
|
|
RUN mv /shared/postgres_data /shared/postgres_data_orig
|
|
|
|
# re-instantiate data on boot if needed (this will allow it to persist across
|
|
# invocations when used with a mounted volume)
|
|
ADD ensure-database /etc/runit/1.d/ensure-database
|
|
|
|
ADD install-rust /tmp/install-rust
|
|
ADD install-selenium /tmp/install-selenium
|
|
RUN /tmp/install-selenium
|
|
|
|
# Install & Configure MailHog (https://github.com/mailhog/MailHog)
|
|
RUN wget -qO /tmp/mailhog https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64\
|
|
&& echo "e2ed634ded49929f089b20045581955ed217672078fd86082dd7a6c67c5d09c7 /tmp/mailhog" | sha256sum -c -\
|
|
&& mv /tmp/mailhog /usr/local/bin/mailhog\
|
|
&& chmod +x /usr/local/bin/mailhog\
|
|
&& rm -rf /tmp/*
|
|
|
|
USER discourse
|
|
|
|
# Warm global bundle cache, then delete the compressed `cache/` versions (`/gem/` are enough)
|
|
RUN --mount=type=bind,src=/repo,from=repo-fetcher,target=/tmp/discourse-clone,readwrite \
|
|
cd /tmp/discourse-clone \
|
|
&& bundle install --deployment \
|
|
&& rm -rf /home/discourse/.bundle/gems/ruby/*/cache/*
|
|
|
|
# Warm global yarn cache
|
|
RUN --mount=type=bind,src=/repo,from=repo-fetcher,target=/tmp/discourse-clone,readwrite \
|
|
cd /tmp/discourse-clone \
|
|
&& (if [ -f yarn.lock ]; then yarn install; else CI=1 pnpm install; fi)
|
|
|
|
USER root
|