diff --git a/Dockerfile b/Dockerfile index cf311fef2..0efe61bef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,60 +7,60 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio # Install Node v16 (LTS) ENV NODE_VER="16.17.1" RUN ARCH= && \ - dpkgArch="$(dpkg --print-architecture)" && \ + dpkgArch="$(dpkg --print-architecture)" && \ case "${dpkgArch##*-}" in \ - amd64) ARCH='x64';; \ - ppc64el) ARCH='ppc64le';; \ - s390x) ARCH='s390x';; \ - arm64) ARCH='arm64';; \ - armhf) ARCH='armv7l';; \ - i386) ARCH='x86';; \ - *) echo "unsupported architecture"; exit 1 ;; \ + amd64) ARCH='x64';; \ + ppc64el) ARCH='ppc64le';; \ + s390x) ARCH='s390x';; \ + arm64) ARCH='arm64';; \ + armhf) ARCH='armv7l';; \ + i386) ARCH='x86';; \ + *) echo "unsupported architecture"; exit 1 ;; \ esac && \ - echo "Etc/UTC" > /etc/localtime && \ - apt-get update && \ - apt-get install -y --no-install-recommends ca-certificates wget python3 apt-utils && \ - cd ~ && \ - wget -q https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-linux-$ARCH.tar.gz && \ - tar xf node-v$NODE_VER-linux-$ARCH.tar.gz && \ - rm node-v$NODE_VER-linux-$ARCH.tar.gz && \ - mv node-v$NODE_VER-linux-$ARCH /opt/node + echo "Etc/UTC" > /etc/localtime && \ + apt-get update && \ + apt-get install -y --no-install-recommends ca-certificates wget python3 apt-utils && \ + cd ~ && \ + wget -q https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-linux-$ARCH.tar.gz && \ + tar xf node-v$NODE_VER-linux-$ARCH.tar.gz && \ + rm node-v$NODE_VER-linux-$ARCH.tar.gz && \ + mv node-v$NODE_VER-linux-$ARCH /opt/node # Install Ruby 3.0 ENV RUBY_VER="3.0.4" RUN apt-get update && \ apt-get install -y --no-install-recommends build-essential \ - bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \ - libncurses5-dev libffi-dev zlib1g-dev libssl-dev && \ - cd ~ && \ - wget https://cache.ruby-lang.org/pub/ruby/${RUBY_VER%.*}/ruby-$RUBY_VER.tar.gz && \ - tar xf ruby-$RUBY_VER.tar.gz && \ - cd ruby-$RUBY_VER && \ - ./configure --prefix=/opt/ruby \ - --with-jemalloc \ - --with-shared \ - --disable-install-doc && \ - make -j"$(nproc)" > /dev/null && \ - make install && \ - rm -rf ../ruby-$RUBY_VER.tar.gz ../ruby-$RUBY_VER + bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \ + libncurses5-dev libffi-dev zlib1g-dev libssl-dev && \ + cd ~ && \ + wget https://cache.ruby-lang.org/pub/ruby/${RUBY_VER%.*}/ruby-$RUBY_VER.tar.gz && \ + tar xf ruby-$RUBY_VER.tar.gz && \ + cd ruby-$RUBY_VER && \ + ./configure --prefix=/opt/ruby \ + --with-jemalloc \ + --with-shared \ + --disable-install-doc && \ + make -j"$(nproc)" > /dev/null && \ + make install && \ + rm -rf ../ruby-$RUBY_VER.tar.gz ../ruby-$RUBY_VER ENV PATH="${PATH}:/opt/ruby/bin:/opt/node/bin" RUN npm install -g npm@latest && \ - npm install -g yarn && \ - gem install bundler && \ - apt-get update && \ - apt-get install -y --no-install-recommends git libicu-dev libidn11-dev \ - libpq-dev shared-mime-info + npm install -g yarn && \ + gem install bundler && \ + apt-get update && \ + apt-get install -y --no-install-recommends git libicu-dev libidn11-dev \ + libpq-dev shared-mime-info COPY Gemfile* package.json yarn.lock /opt/mastodon/ RUN cd /opt/mastodon && \ bundle config set --local deployment 'true' && \ - bundle config set --local without 'development test' && \ + bundle config set --local with 'development test' && \ bundle config set silence_root_warning true && \ - bundle install -j"$(nproc)" && \ - yarn install --pure-lockfile + bundle install -j"$(nproc)" && \ + yarn install --pure-lockfile FROM ubuntu:20.04 @@ -76,32 +76,32 @@ ARG UID=991 ARG GID=991 SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update && \ - echo "Etc/UTC" > /etc/localtime && \ - apt-get install -y --no-install-recommends whois wget && \ - addgroup --gid $GID mastodon && \ - useradd -m -u $UID -g $GID -d /opt/mastodon mastodon && \ - echo "mastodon:$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 24 | mkpasswd -s -m sha-256)" | chpasswd && \ - rm -rf /var/lib/apt/lists/* + echo "Etc/UTC" > /etc/localtime && \ + apt-get install -y --no-install-recommends whois wget && \ + addgroup --gid $GID mastodon && \ + useradd -m -u $UID -g $GID -d /opt/mastodon mastodon && \ + echo "mastodon:$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 24 | mkpasswd -s -m sha-256)" | chpasswd && \ + rm -rf /var/lib/apt/lists/* # Install mastodon runtime deps RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections RUN apt-get update && \ apt-get -y --no-install-recommends install \ - libssl1.1 libpq5 imagemagick ffmpeg libjemalloc2 \ - libicu66 libidn11 libyaml-0-2 \ - file ca-certificates tzdata libreadline8 gcc tini apt-utils && \ - ln -s /opt/mastodon /mastodon && \ - gem install bundler && \ - rm -rf /var/cache && \ - rm -rf /var/lib/apt/lists/* + libssl1.1 libpq5 imagemagick ffmpeg libjemalloc2 \ + libicu66 libidn11 libyaml-0-2 \ + file ca-certificates tzdata libreadline8 gcc tini apt-utils && \ + ln -s /opt/mastodon /mastodon && \ + gem install bundler && \ + rm -rf /var/cache && \ + rm -rf /var/lib/apt/lists/* # Copy over mastodon source, and dependencies from building, and set permissions COPY --chown=mastodon:mastodon . /opt/mastodon COPY --from=build-dep --chown=mastodon:mastodon /opt/mastodon /opt/mastodon # Run mastodon services in prod mode -ENV RAILS_ENV="production" -ENV NODE_ENV="production" +ENV RAILS_ENV="development" +ENV NODE_ENV="development" # Tell rails to serve static files ENV RAILS_SERVE_STATIC_FILES="true" @@ -112,8 +112,8 @@ USER mastodon # Precompile assets RUN cd ~ && \ - OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder rails assets:precompile && \ - yarn cache clean + OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder rails assets:precompile && \ + yarn cache clean # Set the work dir and the container entry point WORKDIR /opt/mastodon diff --git a/docker-compose.yml b/docker-compose.yml index c534286c7..d4b1d3bbd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -58,8 +58,8 @@ services: build: . image: tootsuite/mastodon restart: always - env_file: .env.production - command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" + env_file: .env.development + command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -b 0.0.0.0 -p 3000" networks: - external_network - internal_network @@ -79,7 +79,7 @@ services: build: . image: tootsuite/mastodon restart: always - env_file: .env.production + env_file: .env.development command: node ./streaming networks: - external_network @@ -97,7 +97,7 @@ services: build: . image: tootsuite/mastodon restart: always - env_file: .env.production + env_file: .env.development command: bundle exec sidekiq depends_on: - db