diff --git a/.travis.yml b/.travis.yml index 55dacb9be4..0ef174f41b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ install: - docker-compose build - docker-compose up -d - docker-compose exec web sleep 5 - - docker-compose logs db + - docker-compose logs - netstat -ltpn - docker-compose exec web bash -c "rake db:setup" - docker-compose exec web bash -c "rake db:migrate" @@ -31,6 +31,7 @@ install: - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then gem install danger danger-junit; fi' script: + - docker-compose exec web bash -c "apt install -y phantomjs" - docker-compose exec web bash -c "wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" - docker-compose exec web bash -c "dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install" - docker-compose exec web bash -c "wget https://chromedriver.storage.googleapis.com/74.0.3729.6/chromedriver_linux64.zip" # https://sites.google.com/a/chromium.org/chromedriver/ diff --git a/Dockerfile b/Dockerfile index ac4ee9ab32..2055ebe761 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,26 +6,22 @@ FROM ruby:2.4.4-stretch LABEL description="This image deploys Plots2." # Set correct environment variables. -RUN mkdir -p /app ENV HOME /root -ENV PHANTOMJS_VERSION 2.1.1 RUN echo \ 'deb http://ftp.ca.debian.org/debian/ stretch main\n \ deb http://ftp.ca.debian.org/debian/ stretch-updates main\n \ - deb http://security.debian.org stretch/updates main\n' \ + deb http://security.debian.org stretch/updates main\n \ + deb http://deb.nodesource.com/node_8.x stretch main\n' \ > /etc/apt/sources.list # Install dependencies -RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - -RUN apt-get update -qq && apt-get install -y build-essential bundler libmariadbclient-dev ruby-rmagick libfreeimage3 wget curl procps cron make nodejs -RUN wget https://github.com/Medium/phantomjs/releases/download/v$PHANTOMJS_VERSION/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -O /tmp/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2; tar -xvf /tmp/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -C /opt ; cp /opt/phantomjs-$PHANTOMJS_VERSION-linux-x86_64/bin/* /usr/local/bin/ - -# Install yarn -RUN npm config set strict-ssl false -RUN npm install -g yarn - -RUN rm -r /usr/local/bundle +ADD nodesource.gpg.key /tmp/nodesource.gpg.key +RUN apt-key add /tmp/nodesource.gpg.key && apt-get update -qq \ + && apt-get install --no-install-recommends -y build-essential libmariadbclient-dev \ + wget curl procps cron make nodejs unzip \ + apt-transport-https libfreeimage3 \ + && npm install -g yarn # Install bundle of gems WORKDIR /tmp @@ -33,8 +29,10 @@ ADD Gemfile /tmp/Gemfile ADD Gemfile.lock /tmp/Gemfile.lock RUN bundle install --jobs=4 -ADD . /app WORKDIR /app -RUN yarn install && yarn upgrade -RUN passenger-config compile-nginx-engine --connect-timeout 60 --idle-timeout 60 +COPY Gemfile /app/Gemfile +COPY Gemfile.lock /app/Gemfile.lock +COPY start.sh /app/start.sh + +CMD [ "bash", "-l", "start.sh" ] diff --git a/containers/docker-compose-testing.yml b/containers/docker-compose-testing.yml index 54c3d6e7a1..95d598c27e 100644 --- a/containers/docker-compose-testing.yml +++ b/containers/docker-compose-testing.yml @@ -23,7 +23,6 @@ services: build: .. cap_add: - SYS_PTRACE - command: /bin/bash -c "sleep 5 && /usr/local/bundle/bin/passenger start --max-pool-size 9 --min-instances 9 -p 4000" environment: - RAILS_ENV=${RAILS_ENV} - SECRET_KEY_BASE=${SECRET_KEY_BASE} @@ -32,7 +31,6 @@ services: - redis volumes: - ..:/app - - js_libs:/app/public/lib restart: unless-stopped sidekiq: build: .. @@ -47,5 +45,4 @@ services: - .:/app environment: - REDIS_URL=redis://redis:6379/0 -volumes: - js_libs: + diff --git a/nodesource.gpg.key b/nodesource.gpg.key new file mode 100644 index 0000000000..1dc1d1016b --- /dev/null +++ b/nodesource.gpg.key @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 +Comment: GPGTools - https://gpgtools.org + +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 +=CLGF +-----END PGP PUBLIC KEY BLOCK----- diff --git a/start.sh b/start.sh new file mode 100644 index 0000000000..6e5529abbe --- /dev/null +++ b/start.sh @@ -0,0 +1,13 @@ +#!/bin/bash -l + +pidfile=/app/tmp/pids/server.pid + +bundle check || bundle install +yarn + +if [ -f $pidfile ] ; then + >&2 echo 'Server PID file already exists. Removing it...'; + rm $pidfile; +fi + +bundle exec passenger start --max-pool-size 9 --min-instances 9 -p 4000