-
Notifications
You must be signed in to change notification settings - Fork 18
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
1 parent
8391ace
commit 8462ca9
Showing
2 changed files
with
85 additions
and
82 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,84 +1,53 @@ | ||
FROM ruby:2.7.3-slim | ||
MAINTAINER Development and Operations team @ Department of Veterans Affairs | ||
|
||
# Build variables | ||
ENV BUILD build-essential postgresql-client libaio1 libpq-dev libsqlite3-dev curl software-properties-common apt-transport-https pdftk | ||
ENV CASEFLOW git yarn | ||
|
||
# Environment (system) variables | ||
ENV LD_LIBRARY_PATH="/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH" \ | ||
ORACLE_HOME="/opt/oracle/instantclient_12_2" \ | ||
LANG="AMERICAN_AMERICA.US7ASCII" \ | ||
ARG RUBY_VERSION=2.7.3 | ||
FROM registry.docker.com/library/ruby:$RUBY_VERSION-slim | ||
|
||
# Set up environment variables | ||
ENV BUILD="build-essential postgresql-client libpq-dev libsqlite3-dev curl ca-certificates wget git" \ | ||
NVM_DIR="/usr/local/nvm" \ | ||
NODE_VERSION="16.16.0" \ | ||
PATH="$NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH" \ | ||
RAILS_ENV="development" \ | ||
DEPLOY_ENV="demo" \ | ||
PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH" \ | ||
NODE_OPTIONS="--max-old-space-size=8192" \ | ||
SSL_CERT_FILE="/etc/ssl/certs/cacert.pem" | ||
# install oracle deps | ||
WORKDIR /opt/oracle/instantclient_12_2/ | ||
COPY docker-bin/oracle_libs/* ./ | ||
RUN ln -s libclntsh.so.12.1 libclntsh.so | ||
|
||
WORKDIR /caseflow | ||
LANG="C.UTF-8" | ||
|
||
# Copy all the files | ||
COPY . . | ||
# Copy all files from docker-bin into /usr/bin/ in the container | ||
COPY docker-bin/. /usr/bin/ | ||
|
||
RUN pwd && ls -lsa | ||
# Copy the contents of the instantclient_23_3 folder to the Oracle directory | ||
COPY docker-bin/instantclient_23_3 /usr/lib/oracle/instantclient_23_3 | ||
|
||
# Install VA Trusted Certificates | ||
RUN mkdir -p /usr/local/share/ca-certificates/va | ||
COPY docker-bin/ca-certs/*.crt /usr/local/share/ca-certificates/va/ | ||
#COPY docker-bin/ca-certs/*.cer /usr/local/share/ca-certificates/va/ | ||
RUN update-ca-certificates | ||
COPY docker-bin/ca-certs/cacert.pem /etc/ssl/certs/cacert.pem | ||
# Set environment variables for Oracle libraries | ||
ENV ORACLE_HOME="/usr/lib/oracle/instantclient_23_3" | ||
ENV LD_LIBRARY_PATH="/usr/lib/oracle/instantclient_23_3:$LD_LIBRARY_PATH" | ||
|
||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh | ||
|
||
RUN apt -y update && \ | ||
apt -y upgrade && \ | ||
mkdir -p /usr/share/man/man1 && \ | ||
mkdir /usr/share/man/man7 && \ | ||
apt install -y ${BUILD} && \ | ||
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ | ||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ | ||
apt -y update | ||
|
||
# Install node | ||
RUN mkdir /usr/local/nvm | ||
ENV NVM_DIR /usr/local/nvm | ||
ENV NODE_VERSION 16.16.0 | ||
ENV NVM_INSTALL_PATH $NVM_DIR/versions/node/v$NODE_VERSION | ||
RUN curl --silent -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash | ||
RUN source $NVM_DIR/nvm.sh \ | ||
&& nvm install $NODE_VERSION \ | ||
&& nvm alias default $NODE_VERSION \ | ||
&& nvm use default | ||
ENV NODE_PATH $NVM_INSTALL_PATH/lib/node_modules | ||
ENV PATH $NVM_INSTALL_PATH/bin:$PATH | ||
|
||
RUN apt install -y ${CASEFLOW} && \ | ||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ | ||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ | ||
apt-get clean && apt-get autoclean && apt-get autoremove | ||
# Install Oracle dependencies and create symbolic links | ||
WORKDIR /usr/lib/oracle/instantclient_23_3/ | ||
RUN ln -s libclntsh.so libclntsh.so.23.1 | ||
|
||
WORKDIR /caseflow | ||
|
||
# install jemalloc | ||
RUN apt install -y --no-install-recommends libjemalloc-dev | ||
# Install base dependencies | ||
RUN apt-get update && \ | ||
apt-get install -y --no-install-recommends $BUILD && \ | ||
rm -rf /var/lib/apt/lists/* | ||
|
||
RUN rm -rf /var/lib/apt/lists/* | ||
# Set up NVM and Node | ||
RUN mkdir -p $NVM_DIR && \ | ||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash && \ | ||
. "$NVM_DIR/nvm.sh" && \ | ||
nvm install $NODE_VERSION && \ | ||
nvm alias default $NODE_VERSION | ||
|
||
# Installing the version of bundler that corresponds to the Gemfile.lock | ||
# Rake 13.0.1 is already installed, so we're uninstalling it and letting bundler install rake later. | ||
RUN gem install bundler:$(cat Gemfile.lock | tail -1 | tr -d " ") && gem uninstall -i /usr/local/lib/ruby/gems/2.7.0 rake | ||
RUN bundle install && \ | ||
cd client && \ | ||
yarn install && \ | ||
yarn run build:demo && \ | ||
chmod +x /caseflow/docker-bin/startup.sh && \ | ||
rm -rf docker-bin | ||
# Install compatible Bundler version and gems | ||
COPY Gemfile* . | ||
RUN gem install bundler -v 2.3.26 && \ | ||
bundle config build.ruby-oci8 --with-oci8-include=/usr/lib/oracle/instantclient_23_3 --with-oci8-lib=/usr/lib/oracle/instantclient_23_3 && \ | ||
bundle install | ||
|
||
# Run the app | ||
ENTRYPOINT ["/bin/bash", "-c", "/caseflow/docker-bin/startup.sh"] | ||
|
||
# Expose the Rails port | ||
ARG DEFAULT_PORT=3000 | ||
EXPOSE ${DEFAULT_PORT} | ||
|
||
# Start the Rails application | ||
CMD ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"] |
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,39 +1,73 @@ | ||
version: '3' | ||
version: "3.9" | ||
|
||
services: | ||
# PostgreSQL Database | ||
appeals-db: | ||
image: postgres:14.8 | ||
container_name: appeals-db | ||
ports: | ||
- "5432:5432" | ||
volumes: | ||
- postgresdata:/var/lib/postgresql/data | ||
environment: | ||
- POSTGRES_PASSWORD=postgres | ||
|
||
# Redis Cache | ||
appeals-redis: | ||
container_name: appeals-redis | ||
image: redis:6.2.6 | ||
container_name: appeals-redis | ||
ports: | ||
- "6379:6379" | ||
|
||
appeals-postgres: | ||
image: postgres:14.8 | ||
container_name: appeals-db | ||
# Rails Application | ||
rails: | ||
build: | ||
context: . | ||
dockerfile: Dockerfile | ||
command: "bundle exec rails s -p 3000 -b '0.0.0.0'" | ||
ports: | ||
- "5432:5432" | ||
- "3000:3000" | ||
volumes: | ||
- "postgresdata:/var/lib/postgresql/data" | ||
environment: | ||
- POSTGRES_PASSWORD=postgres | ||
- .:/caseflow | ||
depends_on: | ||
- appeals-db | ||
- appeals-redis | ||
- appeals-localstack-aws | ||
env_file: | ||
- .env | ||
networks: | ||
- ls | ||
|
||
# Localstack for AWS Services | ||
appeals-localstack-aws: | ||
platform: linux/amd64 | ||
container_name: localstack | ||
image: localstack/localstack:0.14.5 | ||
container_name: localstack | ||
ports: | ||
- "4566:4566" | ||
environment: | ||
- SERVICES=sqs,dynamodb,kms | ||
volumes: | ||
- ./local/sqs/conf:/conf | ||
networks: | ||
- ls | ||
|
||
# Metabase Analytics | ||
appeals-metabase: | ||
platform: linux/amd64 | ||
container_name: metabase | ||
build: | ||
context: metabase | ||
ports: | ||
- "3002:3000" | ||
networks: | ||
- ls | ||
|
||
volumes: | ||
postgresdata: | ||
postgresdata: {} | ||
|
||
networks: | ||
ls: | ||
ipam: | ||
config: | ||
- subnet: "10.0.2.0/24" |