This repository has been archived by the owner on Jun 5, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'release/8.3' into stable/8
- Loading branch information
Showing
104 changed files
with
5,026 additions
and
1,505 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,71 +1,84 @@ | ||
FROM ruby:2.6-stretch | ||
MAINTAINER operations@openproject.com | ||
|
||
ENV NODE_VERSION="10.15.0" | ||
ENV BUNDLER_VERSION="2.0.1" | ||
ENV NODE_VERSION "10.15.0" | ||
ENV BUNDLER_VERSION "2.0.1" | ||
ENV APP_USER app | ||
ENV APP_PATH /usr/src/app | ||
ENV APP_DATA /var/db/openproject | ||
ENV ATTACHMENTS_STORAGE_PATH /var/db/openproject/files | ||
ENV APP_PATH /app | ||
ENV APP_DATA_PATH /var/openproject/assets | ||
ENV APP_DATA_PATH_LEGACY /var/db/openproject | ||
ENV PGDATA /var/openproject/pgdata | ||
ENV PGDATA_LEGACY /var/lib/postgresql/9.6/main | ||
|
||
ENV DATABASE_URL postgres://openproject:openproject@127.0.0.1/openproject | ||
ENV RAILS_ENV production | ||
ENV HEROKU true | ||
ENV RAILS_CACHE_STORE memcache | ||
ENV OPENPROJECT_INSTALLATION__TYPE docker | ||
ENV NEW_RELIC_AGENT_ENABLED false | ||
ENV ATTACHMENTS_STORAGE_PATH $APP_DATA_PATH/files | ||
|
||
# Set a default key base, ensure to provide a secure value in production environments! | ||
ENV SECRET_KEY_BASE=OVERWRITE_ME | ||
ENV SECRET_KEY_BASE OVERWRITE_ME | ||
|
||
# install node + npm | ||
RUN curl https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz | tar xzf - -C /usr/local --strip-components=1 | ||
|
||
RUN apt-get update -qq && \ | ||
DEBIAN_FRONTEND=noninteractive apt-get install -y \ | ||
postgresql-client \ | ||
mysql-client \ | ||
sqlite \ | ||
poppler-utils \ | ||
unrtf \ | ||
tesseract-ocr \ | ||
catdoc && \ | ||
apt-get clean && rm -rf /var/lib/apt/lists/* | ||
DEBIAN_FRONTEND=noninteractive apt-get install -y \ | ||
postgresql-client \ | ||
poppler-utils \ | ||
unrtf \ | ||
tesseract-ocr \ | ||
catdoc \ | ||
memcached \ | ||
postfix \ | ||
postgresql \ | ||
apache2 \ | ||
supervisor && \ | ||
apt-get clean && rm -rf /var/lib/apt/lists/* | ||
|
||
# Set up pg defaults | ||
RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.6/main/pg_hba.conf | ||
RUN echo "listen_addresses='*'" >> /etc/postgresql/9.6/main/postgresql.conf | ||
RUN echo "data_directory='$PGDATA'" >> /etc/postgresql/9.6/main/postgresql.conf | ||
RUN rm -rf "$PGDATA_LEGACY" && rm -rf "$PGDATA" && mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" | ||
RUN a2enmod proxy proxy_http && rm -f /etc/apache2/sites-enabled/000-default.conf | ||
|
||
# using /home/app since npm cache and other stuff will be put there when running npm install | ||
# we don't want to pollute any locally-mounted directory | ||
RUN useradd -d /home/$APP_USER -m $APP_USER | ||
RUN mkdir -p $APP_PATH $APP_DATA | ||
RUN gem install bundler --version "${bundler_version}" --no-document | ||
|
||
WORKDIR $APP_PATH | ||
RUN gem install bundler --version "${bundler_version}" --no-document | ||
|
||
COPY Gemfile ./Gemfile | ||
COPY Gemfile.* ./ | ||
COPY modules ./modules | ||
# OpenProject::Version is required by module versions in gemspecs | ||
RUN mkdir -p lib/open_project | ||
COPY lib/open_project/version.rb ./lib/open_project/ | ||
RUN bundle install --deployment --with="docker opf_plugins" --without="test development" --jobs=8 --retry=3 | ||
|
||
# Then, npm install node modules | ||
COPY package.json /tmp/npm/package.json | ||
COPY frontend/*.json /tmp/npm/frontend/ | ||
RUN cd /tmp/npm/frontend/ && RAILS_ENV=production npm install && mv /tmp/npm/frontend /usr/src/app/ | ||
RUN bundle install --deployment --with="docker opf_plugins" --without="test development mysql2" --jobs=8 --retry=3 | ||
|
||
# Finally, copy over the whole thing | ||
COPY . /usr/src/app | ||
RUN cp docker/Procfile . | ||
COPY . $APP_PATH | ||
|
||
RUN sed -i "s|Rails.groups(:opf_plugins)|Rails.groups(:opf_plugins, :docker)|" config/application.rb | ||
|
||
# Ensure we can write in /tmp/op_uploaded_files (cf. #29112) | ||
RUN mkdir -p /tmp/op_uploaded_files/ | ||
RUN chown -R $APP_USER:$APP_USER /tmp/op_uploaded_files/ | ||
|
||
# Allow uploading avatars w/ postgres | ||
RUN chown -R $APP_USER:$APP_USER $APP_DATA | ||
RUN mkdir -p /tmp/op_uploaded_files/ && chown -R $APP_USER:$APP_USER /tmp/op_uploaded_files/ | ||
|
||
# Re-use packager database.yml | ||
COPY packaging/conf/database.yml ./config/database.yml | ||
|
||
# Run the npm postinstall manually after it was copied | ||
RUN DATABASE_URL=sqlite3:///tmp/db.sqlite3 RAILS_ENV=production bundle exec rake assets:precompile | ||
# Then, npm install node modules | ||
RUN bash docker/precompile-assets.sh | ||
|
||
# Include pandoc | ||
RUN DATABASE_URL=sqlite3:///tmp/db.sqlite3 RAILS_ENV=production bundle exec rails runner "puts ::OpenProject::TextFormatting::Formats::Markdown::PandocDownloader.check_or_download!" | ||
# ports | ||
EXPOSE 80 5432 | ||
|
||
CMD ["./docker/web"] | ||
# volumes to export | ||
VOLUME ["$PGDATA", "$APP_DATA_PATH"] | ||
ENTRYPOINT ["./docker/entrypoint.sh"] | ||
VOLUME ["$APP_DATA"] | ||
CMD ["./docker/supervisord"] |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.