-
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
1 parent
6eb6267
commit d2fdc7e
Showing
2 changed files
with
64 additions
and
24 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 |
---|---|---|
|
@@ -3,4 +3,8 @@ docs/* | |
OSX/* | ||
target/* | ||
|
||
**node_modules | ||
**metabase.jar | ||
|
||
.dockerignore | ||
Dockerfile |
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,43 +1,79 @@ | ||
# NOTE: this Dockerfile builds Metabase from source. We recommend deploying the pre-built | ||
# images hosted on Docker Hub https://hub.docker.com/r/metabase/metabase/ which use the | ||
# Dockerfile located at ./bin/docker/Dockerfile | ||
################### | ||
# STAGE 1: builder | ||
################### | ||
|
||
FROM java:openjdk-8-jre-alpine | ||
FROM java:openjdk-8-jre-alpine as builder | ||
|
||
ENV JAVA_HOME=/usr/lib/jvm/default-jvm | ||
ENV PATH /usr/local/bin:$PATH | ||
ENV LEIN_ROOT 1 | ||
WORKDIR /app/source | ||
|
||
ENV FC_LANG en-US | ||
ENV LC_CTYPE en_US.UTF-8 | ||
|
||
# install core build tools | ||
RUN apk add --update nodejs git wget bash python make g++ java-cacerts ttf-dejavu fontconfig && \ | ||
npm install -g yarn && \ | ||
ln -sf "${JAVA_HOME}/bin/"* "/usr/bin/" | ||
# bash: various shell scripts | ||
# wget: installing lein | ||
# git: ./bin/version | ||
# nodejs: frontend building | ||
# make: backend building | ||
RUN apk add --update bash nodejs git wget make | ||
|
||
# fix broken cacerts | ||
RUN rm -f /usr/lib/jvm/default-jvm/jre/lib/security/cacerts && \ | ||
ln -s /etc/ssl/certs/java/cacerts /usr/lib/jvm/default-jvm/jre/lib/security/cacerts | ||
# yarn: frontend dependencies | ||
RUN npm install -g yarn | ||
|
||
# install lein | ||
# lein: backend dependencies and building | ||
ADD https://raw.github.com/technomancy/leiningen/stable/bin/lein /usr/local/bin/lein | ||
RUN chmod 744 /usr/local/bin/lein | ||
RUN lein upgrade | ||
|
||
# install dependencies before adding the rest of the source to maximize caching | ||
|
||
# backend dependencies | ||
ADD project.clj . | ||
RUN lein deps | ||
|
||
# frontend dependencies | ||
ADD yarn.lock package.json ./ | ||
RUN yarn | ||
|
||
# add the application source to the image | ||
ADD . /app/source | ||
# add the rest of the source | ||
ADD . . | ||
|
||
# build the app | ||
WORKDIR /app/source | ||
RUN bin/build | ||
|
||
# remove unnecessary packages & tidy up | ||
RUN apk del nodejs git wget python make g++ | ||
RUN rm -rf /root/.lein /root/.m2 /root/.node-gyp /root/.npm /root/.yarn /root/.yarn-cache /tmp/* /var/cache/apk/* /app/source/node_modules | ||
# install updated cacerts to /etc/ssl/certs/java/cacerts | ||
RUN apk add --update java-cacerts | ||
|
||
# import AWS RDS cert into /etc/ssl/certs/java/cacerts | ||
ADD https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem . | ||
RUN keytool -noprompt -import -trustcacerts -alias aws-rds \ | ||
-file rds-combined-ca-bundle.pem \ | ||
-keystore /etc/ssl/certs/java/cacerts \ | ||
-keypass changeit -storepass changeit | ||
|
||
# ################### | ||
# # STAGE 2: runner | ||
# ################### | ||
|
||
FROM java:openjdk-8-jre-alpine as runner | ||
|
||
WORKDIR /app | ||
|
||
ENV FC_LANG en-US | ||
ENV LC_CTYPE en_US.UTF-8 | ||
|
||
# dependencies | ||
RUN apk add --update bash ttf-dejavu fontconfig | ||
|
||
# add fixed cacerts | ||
COPY --from=builder /etc/ssl/certs/java/cacerts /usr/lib/jvm/default-jvm/jre/lib/security/cacerts | ||
|
||
# add Metabase script and uberjar | ||
RUN mkdir -p bin target/uberjar | ||
COPY --from=builder /app/source/target/uberjar/metabase.jar /app/target/uberjar/ | ||
COPY --from=builder /app/source/bin/start /app/bin/ | ||
|
||
# expose our default runtime port | ||
EXPOSE 3000 | ||
|
||
# build and then run it | ||
WORKDIR /app/source | ||
ENTRYPOINT ["./bin/start"] | ||
# run it | ||
ENTRYPOINT ["/app/bin/start"] |