forked from openfoodfoundation/openfoodnetwork
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Neal Chambers
committed
Oct 8, 2024
1 parent
6f2c5b5
commit 1249a1d
Showing
6 changed files
with
232 additions
and
90 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,92 +1,63 @@ | ||
FROM ubuntu:20.04 | ||
|
||
ENV TZ Europe/London | ||
|
||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | ||
|
||
RUN echo "deb http://security.ubuntu.com/ubuntu bionic-security main" >> /etc/apt/sources.list | ||
|
||
# Install all the requirements | ||
RUN apt-get update && apt-get install -y \ | ||
FROM ruby:3.1.4-alpine3.19 AS base | ||
ARG TARGETPLATFORM | ||
ENV LANG=C.UTF-8 \ | ||
LC_ALL=C.UTF-8 \ | ||
TZ=Europe/London \ | ||
RAILS_ROOT=/usr/src/app | ||
RUN apk --no-cache upgrade | ||
RUN apk add --no-cache tzdata | ||
# Only packages required to run Rails in the production environment can be added to `.essentials`. | ||
# postgresql-dev: Required by the postgre gem | ||
# imagemagick, imagemagick-jpeg: Required by the mini_magick gem | ||
# wkhtmltopdf: Required by wicked_pdf and wkhtmltopdf-binary | ||
RUN set -e && \ | ||
apk add --no-cache --virtual .essentials \ | ||
postgresql-client \ | ||
imagemagick \ | ||
imagemagick-jpeg && \ | ||
apk add --no-cache --virtual wkhtmltopdf | ||
|
||
WORKDIR $RAILS_ROOT | ||
|
||
FROM base AS development-base | ||
RUN apk add --no-cache --virtual .build-deps build-base postgresql-dev git nodejs yarn | ||
RUN gem install bundler -v '2.4.3' | ||
RUN <<EOF | ||
set -e | ||
# less: Used for 'rails console' | ||
# vim: Used for 'rails credentials:edit' | ||
# chromium-chromedriver: Used for feature specs | ||
apk add --no-cache --virtual .dev-utils \ | ||
bash \ | ||
curl \ | ||
git \ | ||
build-essential \ | ||
software-properties-common \ | ||
wget \ | ||
zlib1g-dev \ | ||
libreadline-dev \ | ||
libyaml-dev \ | ||
libffi-dev \ | ||
less \ | ||
vim \ | ||
zlib-dev \ | ||
openssl-dev \ | ||
readline-dev \ | ||
yaml-dev \ | ||
sqlite-dev \ | ||
sqlite \ | ||
libxml2-dev \ | ||
libxslt1-dev \ | ||
wait-for-it \ | ||
imagemagick \ | ||
unzip \ | ||
libjemalloc-dev \ | ||
libssl-dev \ | ||
ca-certificates \ | ||
gnupg | ||
|
||
# Setup ENV variables | ||
ENV PATH /usr/local/src/rbenv/shims:/usr/local/src/rbenv/bin:/usr/local/src/nodenv/shims:/usr/local/src/nodenv/bin:$PATH | ||
ENV RBENV_ROOT /usr/local/src/rbenv | ||
ENV NODENV_ROOT /usr/local/src/nodenv | ||
ENV CONFIGURE_OPTS --disable-install-doc | ||
ENV BUNDLE_PATH /bundles | ||
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so | ||
|
||
WORKDIR /usr/src/app | ||
|
||
libxslt-dev \ | ||
libffi-dev \ | ||
vips-dev \ | ||
chromium-chromedriver | ||
apk add --no-cache bash curl \ | ||
&& curl -o /usr/local/bin/wait-for-it https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh \ | ||
&& chmod +x /usr/local/bin/wait-for-it | ||
EOF | ||
|
||
FROM development-base AS yarn-dependencies | ||
COPY package.json yarn.lock ./ | ||
RUN yarn install --frozen-lockfile | ||
|
||
FROM development-base AS development | ||
# trim spaces and line return from .ruby-version file | ||
COPY .ruby-version .ruby-version.raw | ||
RUN cat .ruby-version.raw | tr -d '\r\t ' > .ruby-version | ||
|
||
# Install Rbenv & Ruby | ||
RUN git clone --depth 1 https://github.com/rbenv/rbenv.git ${RBENV_ROOT} && \ | ||
git clone --depth 1 https://github.com/rbenv/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build && \ | ||
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh && \ | ||
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install $(cat .ruby-version) && \ | ||
rbenv global $(cat .ruby-version) | ||
|
||
# Install Postgres | ||
RUN sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main' >> /etc/apt/sources.list.d/pgdg.list" && \ | ||
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null && \ | ||
apt-get update && \ | ||
apt-get install -yqq --no-install-recommends postgresql-client-10 libpq-dev | ||
|
||
|
||
# trim spaces and line return from .node-version file | ||
COPY .node-version .node-version.raw | ||
RUN cat .node-version.raw | tr -d '\r\t ' > .node-version | ||
|
||
# Install Node and Yarn with Nodenv | ||
RUN git clone --depth 1 https://github.com/nodenv/nodenv.git ${NODENV_ROOT} && \ | ||
git clone --depth 1 https://github.com/nodenv/node-build.git ${NODENV_ROOT}/plugins/node-build && \ | ||
git clone --depth 1 https://github.com/pine/nodenv-yarn-install.git ${NODENV_ROOT}/plugins/nodenv-yarn-install && \ | ||
git clone --depth 1 https://github.com/nodenv/nodenv-package-rehash.git ${NODENV_ROOT}/plugins/nodenv-package-rehash && \ | ||
echo 'eval "$(nodenv init -)"' >> /etc/profile.d/nodenv.sh && \ | ||
nodenv install $(cat .node-version) && \ | ||
nodenv global $(cat .node-version) | ||
|
||
# Install Chrome | ||
RUN wget --quiet -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ | ||
sh -c "echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google-chrome.list" && \ | ||
apt-get update && \ | ||
apt-get install -fy google-chrome-stable | ||
|
||
# Install Chromedriver | ||
RUN wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip && \ | ||
unzip chromedriver_linux64.zip -d /usr/bin && \ | ||
chmod u+x /usr/bin/chromedriver | ||
|
||
# Copy code and install app dependencies | ||
COPY . /usr/src/app/ | ||
|
||
# Install Bundler | ||
RUN ./script/install-bundler | ||
|
||
# Install front-end dependencies | ||
RUN yarn install | ||
|
||
# Run bundler install in parallel with the amount of available CPUs | ||
RUN bundle install --jobs="$(nproc)" | ||
COPY . $RAILS_ROOT | ||
COPY Gemfile Gemfile.lock ./ | ||
RUN bundle install --jobs "$(nproc)" | ||
COPY --from=yarn-dependencies $RAILS_ROOT/node_modules ./node_modules | ||
# RUN rake ofn:sample_data |
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 |
---|---|---|
@@ -0,0 +1,92 @@ | ||
FROM ubuntu:20.04 | ||
|
||
ENV TZ Europe/London | ||
|
||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | ||
|
||
RUN echo "deb http://security.ubuntu.com/ubuntu bionic-security main" >> /etc/apt/sources.list | ||
|
||
# Install all the requirements | ||
RUN apt-get update && apt-get install -y \ | ||
curl \ | ||
git \ | ||
build-essential \ | ||
software-properties-common \ | ||
wget \ | ||
zlib1g-dev \ | ||
libreadline-dev \ | ||
libyaml-dev \ | ||
libffi-dev \ | ||
libxml2-dev \ | ||
libxslt1-dev \ | ||
wait-for-it \ | ||
imagemagick \ | ||
unzip \ | ||
libjemalloc-dev \ | ||
libssl-dev \ | ||
ca-certificates \ | ||
gnupg | ||
|
||
# Setup ENV variables | ||
ENV PATH /usr/local/src/rbenv/shims:/usr/local/src/rbenv/bin:/usr/local/src/nodenv/shims:/usr/local/src/nodenv/bin:$PATH | ||
ENV RBENV_ROOT /usr/local/src/rbenv | ||
ENV NODENV_ROOT /usr/local/src/nodenv | ||
ENV CONFIGURE_OPTS --disable-install-doc | ||
ENV BUNDLE_PATH /bundles | ||
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so | ||
|
||
WORKDIR /usr/src/app | ||
|
||
# trim spaces and line return from .ruby-version file | ||
COPY .ruby-version .ruby-version.raw | ||
RUN cat .ruby-version.raw | tr -d '\r\t ' > .ruby-version | ||
|
||
# Install Rbenv & Ruby | ||
RUN git clone --depth 1 https://github.com/rbenv/rbenv.git ${RBENV_ROOT} && \ | ||
git clone --depth 1 https://github.com/rbenv/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build && \ | ||
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh && \ | ||
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install $(cat .ruby-version) && \ | ||
rbenv global $(cat .ruby-version) | ||
|
||
# Install Postgres | ||
RUN sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main' >> /etc/apt/sources.list.d/pgdg.list" && \ | ||
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null && \ | ||
apt-get update && \ | ||
apt-get install -yqq --no-install-recommends postgresql-client-10 libpq-dev | ||
|
||
|
||
# trim spaces and line return from .node-version file | ||
COPY .node-version .node-version.raw | ||
RUN cat .node-version.raw | tr -d '\r\t ' > .node-version | ||
|
||
# Install Node and Yarn with Nodenv | ||
RUN git clone --depth 1 https://github.com/nodenv/nodenv.git ${NODENV_ROOT} && \ | ||
git clone --depth 1 https://github.com/nodenv/node-build.git ${NODENV_ROOT}/plugins/node-build && \ | ||
git clone --depth 1 https://github.com/pine/nodenv-yarn-install.git ${NODENV_ROOT}/plugins/nodenv-yarn-install && \ | ||
git clone --depth 1 https://github.com/nodenv/nodenv-package-rehash.git ${NODENV_ROOT}/plugins/nodenv-package-rehash && \ | ||
echo 'eval "$(nodenv init -)"' >> /etc/profile.d/nodenv.sh && \ | ||
nodenv install $(cat .node-version) && \ | ||
nodenv global $(cat .node-version) | ||
|
||
# Install Chrome | ||
RUN wget --quiet -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ | ||
sh -c "echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google-chrome.list" && \ | ||
apt-get update && \ | ||
apt-get install -fy google-chrome-stable | ||
|
||
# Install Chromedriver | ||
RUN wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip && \ | ||
unzip chromedriver_linux64.zip -d /usr/bin && \ | ||
chmod u+x /usr/bin/chromedriver | ||
|
||
# Copy code and install app dependencies | ||
COPY . /usr/src/app/ | ||
|
||
# Install Bundler | ||
RUN ./script/install-bundler | ||
|
||
# Install front-end dependencies | ||
RUN yarn install | ||
|
||
# Run bundler install in parallel with the amount of available CPUs | ||
RUN bundle install --jobs="$(nproc)" |
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
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
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 |
---|---|---|
@@ -0,0 +1,79 @@ | ||
services: | ||
db: | ||
image: postgres:10.19 | ||
restart: always | ||
environment: | ||
POSTGRES_PASSWORD: f00d | ||
POSTGRES_USER: ofn | ||
POSTGRES_DB: open_food_network_dev | ||
ports: | ||
- 5432:5432 | ||
volumes: | ||
- 'postgres:/var/lib/postgresql/data' | ||
redis: | ||
image: redis | ||
ports: | ||
- 6379:6379 | ||
web: | ||
tty: true | ||
stdin_open: true | ||
build: | ||
target: development | ||
context: . | ||
ports: | ||
- 3000:3000 | ||
volumes: | ||
- .:/usr/src/app | ||
- gems:/bundles | ||
- ./config/database.yml:/usr/src/app/config/database.yml | ||
depends_on: | ||
- db | ||
- redis | ||
- webpack | ||
environment: | ||
OFN_DB_HOST: db | ||
OFN_REDIS_URL: redis://redis/ | ||
OFN_REDIS_JOBS_URL: redis://redis | ||
WEBPACKER_DEV_SERVER_HOST: webpack | ||
command: > | ||
bash -c "wait-for-it -t 30 db:5432 && | ||
rm -f tmp/pids/server.pid && | ||
(bundle check || bundle install) && | ||
rake db:create && | ||
yarn install && | ||
rake ofn:sample_data && | ||
rails s -p 3000 -b '0.0.0.0'" | ||
webpack: | ||
build: . | ||
command: ./bin/webpack-dev-server | ||
volumes: | ||
- .:/usr/src/app | ||
- gems:/bundles | ||
ports: | ||
- '3035:3035' | ||
environment: | ||
NODE_ENV: development | ||
RAILS_ENV: development | ||
WEBPACKER_DEV_SERVER_HOST: 0.0.0.0 | ||
worker: | ||
tty: true | ||
stdin_open: true | ||
build: . | ||
volumes: | ||
- .:/usr/src/app | ||
- gems:/bundles | ||
- ./config/database.yml:/usr/src/app/config/database.yml | ||
depends_on: | ||
- db | ||
- redis | ||
environment: | ||
OFN_DB_HOST: db | ||
OFN_REDIS_URL: redis://redis | ||
OFN_REDIS_JOBS_URL: redis://redis | ||
command: > | ||
bash -c "wait-for-it -t 30 db:5432 && | ||
(bundle check || bundle install) && | ||
sidekiq -q mailers -q default" | ||
volumes: | ||
gems: | ||
postgres: |
File renamed without changes.