From 6c23522d9aa968cfbf282d922097684ef83972a0 Mon Sep 17 00:00:00 2001 From: Alax Alves Date: Mon, 18 Mar 2019 23:27:01 -0300 Subject: [PATCH] Implementing multistage build Dockerfile --- Dockerfile | 50 ++++++++++++++++++++++++++++++++++++++++++- Dockerfile.base | 47 ---------------------------------------- Dockerfile.production | 49 +++++++++++++++++++++++++++++++++++++++++- docker-compose.yml | 17 ++++++++++----- 4 files changed, 109 insertions(+), 54 deletions(-) delete mode 100644 Dockerfile.base diff --git a/Dockerfile b/Dockerfile index 0b36037d..bd0c2ccf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,52 @@ -FROM osem/base +FROM opensuse/leap:15 as base + +# Import google packaging key for chrome +COPY google-packaging.key /tmp +RUN rpm --import /tmp/google-packaging.key + +# Enable/Disable the repositories we need/don't need +RUN zypper rr openSUSE-Leap-15.0-Non-Oss openSUSE-Leap-15.0-Update-Non-Oss; \ + zypper ar -f https://download.opensuse.org/repositories/devel:/tools/openSUSE_Leap_15.0/devel:tools.repo; \ + zypper ar -f http://dl.google.com/linux/chrome/rpm/stable/x86_64 google-chrome; \ + zypper --gpg-auto-import-keys refresh + +# Install our requirements +RUN zypper -n install --no-recommends \ + # for compiling assets/gems + nodejs8 gcc-c++ git-core make \ + # for ... + ImageMagick \ + # for bundler + sudo \ + # as databases + libmariadb-devel postgresql-devel sqlite3-devel \ + # for nokogiri + libxml2-devel libxslt-devel \ + # for the interactive shell + ack curl wget w3m vim \ + # for running our tests + phantomjs which \ + # as ruby + ruby2.5-devel \ + # as browser for feature tests + google-chrome-stable + +# Setup sudo +RUN echo 'osem ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers + +# Disable versioned gem binary names +RUN echo 'install: --no-format-executable' >> /etc/gemrc + +# Install bundler & foreman +RUN gem install bundler:1.17.3 foreman + +# Create our user +RUN useradd -m --user-group osem + +CMD ["/bin/bash", "-l"] + +FROM base + ARG CONTAINER_USERID # Configure our user diff --git a/Dockerfile.base b/Dockerfile.base deleted file mode 100644 index c8f45c6c..00000000 --- a/Dockerfile.base +++ /dev/null @@ -1,47 +0,0 @@ -FROM opensuse/leap:15 - -# Import google packaging key for chrome -COPY google-packaging.key /tmp -RUN rpm --import /tmp/google-packaging.key - -# Enable/Disable the repositories we need/don't need -RUN zypper rr openSUSE-Leap-15.0-Non-Oss openSUSE-Leap-15.0-Update-Non-Oss; \ - zypper ar -f https://download.opensuse.org/repositories/devel:/tools/openSUSE_Leap_15.0/devel:tools.repo; \ - zypper ar -f http://dl.google.com/linux/chrome/rpm/stable/x86_64 google-chrome; \ - zypper --gpg-auto-import-keys refresh - -# Install our requirements -RUN zypper -n install --no-recommends \ - # for compiling assets/gems - nodejs8 gcc-c++ git-core make \ - # for ... - ImageMagick \ - # for bundler - sudo \ - # as databases - libmariadb-devel postgresql-devel sqlite3-devel \ - # for nokogiri - libxml2-devel libxslt-devel \ - # for the interactive shell - ack curl wget w3m vim \ - # for running our tests - phantomjs which \ - # as ruby - ruby2.5-devel \ - # as browser for feature tests - google-chrome-stable - -# Setup sudo -RUN echo 'osem ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers - -# Disable versioned gem binary names -RUN echo 'install: --no-format-executable' >> /etc/gemrc - -# Install bundler & foreman -RUN gem install bundler:1.17.3 foreman - -# Create our user -RUN useradd -m --user-group osem - -CMD ["/bin/bash", "-l"] - diff --git a/Dockerfile.production b/Dockerfile.production index 12582dd9..49d46a53 100644 --- a/Dockerfile.production +++ b/Dockerfile.production @@ -1,4 +1,51 @@ -FROM osem/base +FROM opensuse/leap:15 as base + +# Import google packaging key for chrome +COPY google-packaging.key /tmp +RUN rpm --import /tmp/google-packaging.key + +# Enable/Disable the repositories we need/don't need +RUN zypper rr openSUSE-Leap-15.0-Non-Oss openSUSE-Leap-15.0-Update-Non-Oss; \ + zypper ar -f https://download.opensuse.org/repositories/devel:/tools/openSUSE_Leap_15.0/devel:tools.repo; \ + zypper ar -f http://dl.google.com/linux/chrome/rpm/stable/x86_64 google-chrome; \ + zypper --gpg-auto-import-keys refresh + +# Install our requirements +RUN zypper -n install --no-recommends \ + # for compiling assets/gems + nodejs8 gcc-c++ git-core make \ + # for ... + ImageMagick \ + # for bundler + sudo \ + # as databases + libmariadb-devel postgresql-devel sqlite3-devel \ + # for nokogiri + libxml2-devel libxslt-devel \ + # for the interactive shell + ack curl wget w3m vim \ + # for running our tests + phantomjs which \ + # as ruby + ruby2.5-devel \ + # as browser for feature tests + google-chrome-stable + +# Setup sudo +RUN echo 'osem ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers + +# Disable versioned gem binary names +RUN echo 'install: --no-format-executable' >> /etc/gemrc + +# Install bundler & foreman +RUN gem install bundler:1.17.3 foreman + +# Create our user +RUN useradd -m --user-group osem + +CMD ["/bin/bash", "-l"] + +FROM base # Add our files COPY --chown=1000:1000 . /osem/ diff --git a/docker-compose.yml b/docker-compose.yml index 8f31749c..fc62eccc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,15 @@ -version: "2" +version: '3.5' services: + database: - image: postgres - environment: - PGDATA: /var/lib/postgresql/data/pgdata - osem: + container_name: osem-db + image: postgres:11 + volumes: + - pg-data:/var/lib/postgresql/data + + web: + container_name: osem-web build: context: . args: @@ -17,3 +21,6 @@ services: - 3000:3000 volumes: - .:/osem + +volumes: + pg-data: