🐳 💚 Fix release build

This commit is contained in:
mathieu.brunot 2019-02-14 20:30:32 +01:00
parent e42fd1d0ce
commit 8dcf575af2
No known key found for this signature in database
GPG key ID: 81584BEAF692D7E0
3 changed files with 97 additions and 56 deletions

View file

@ -37,25 +37,9 @@ RUN apt-get update && \
make -j2 && \ make -j2 && \
make install && \ make install && \
cd .. && \ cd .. && \
rm -rf ./imagemagick; \ rm -rf ./imagemagick
git clone https://github.com/creationix/nvm.git .nvm; \
bash -c "source .nvm/nvm.sh && nvm install v7.7.1"; \
bash -c "source .nvm/nvm.sh && nvm alias default v7.7.1"; \
.nvm/nvm.sh
COPY ./scripts/lein /home/uxbox/.local/bin/lein ENV NVM_DIR="/home/uxbox/.nvm"
RUN bash -c "/home/uxbox/.local/bin/lein version"
# Copy backend source and build release
COPY ./* /home/uxbox/backend/
RUN bash -c "/home/uxbox/backend/scripts/dist"
# Once application has been built, prepare production image
FROM openjdk:8-alpine
LABEL maintainer="mathieu.brunot at monogramm dot io"
RUN useradd -m -g users -s /bin/bash uxbox; \ RUN useradd -m -g users -s /bin/bash uxbox; \
passwd uxbox -d; \ passwd uxbox -d; \
@ -64,16 +48,41 @@ RUN useradd -m -g users -s /bin/bash uxbox; \
USER uxbox USER uxbox
WORKDIR /home/uxbox WORKDIR /home/uxbox
COPY ./scripts/lein /home/uxbox/.local/bin/lein
RUN git clone https://github.com/creationix/nvm.git .nvm; \
bash -c "source .nvm/nvm.sh && nvm install v7.7.1"; \
bash -c "source .nvm/nvm.sh && nvm alias default v7.7.1"; \
bash -c ".nvm/nvm.sh"; \
bash -c "/home/uxbox/.local/bin/lein version"
# Copy backend source and build release
COPY ./* /home/uxbox/backend/
RUN bash -c "/home/uxbox/backend/scripts/dist"
# Once application has been built, prepare production image
FROM openjdk:8-jre-alpine
LABEL maintainer="mathieu.brunot at monogramm dot io"
# Add uxbox as provided by builder # Add uxbox as provided by builder
COPY --from=0 /home/uxbox/backend/dist/uxbox-backend.jar /home/uxbox COPY --from=0 /home/uxbox/backend/dist/uxbox-backend.jar /srv/uxbox/app.jar
VOLUME /srv/uxbox/resources/public
WORKDIR /srv/uxbox/
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen; \ RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen; \
locale-gen && update-locale LANG=en_US.UTF-8 LC_ALL=C.UTF-8 locale-gen && update-locale LANG=en_US.UTF-8 LC_ALL=C.UTF-8; \
mkdir -p /srv/uxbox/resources/public/media; \
mkdir -p /srv/uxbox/resources/public/static;
ENV \ ENV \
# Locale setup # Locale setup
LANG=en_US.UTF-8 LC_ALL=C.UTF-8 \ LANG=en_US.UTF-8 LC_ALL=C.UTF-8 \
# Application configuration
UXBOX_CONFIG=/srv/uxbox/config/application.properties \
# Security setup # Security setup
UXBOX_SECRET=youshouldoverwritethiswithsomethingelse \ UXBOX_SECRET=youshouldoverwritethiswithsomethingelse \
# Debug setup # Debug setup
@ -99,5 +108,5 @@ ENV \
EXPOSE 6060 EXPOSE 6060
COPY docker-entrypoint.sh .start.sh ENTRYPOINT ["sh", "/entrypoint.sh"]
CMD .start.sh CMD ["java", "-jar", "app.jar"]

View file

@ -1,33 +1,56 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e
echo 'UXBOX backend' echo "UXBOX backend Docker entrypoint initialization..."
cd uxbox/backend
echo 'Backend configuration' echo 'Backend configuration...'
sed -i \
-e "s/:secret .*/:secret \"${UXBOX_SECRET}\"/g" \ # If no config provided in volume, setup a default config from environment variables
\ if [ ! -f $APP_CONFIG ]; then
-e "s/:host .*/:host \"${UXBOX_DEBUG}\"/g" \ echo "Setting up initial application configuration..."
\ echo "# Initial configuration generated at $(date +%Y-%m-%dT%H:%M:%S%z)" > $APP_CONFIG
-e "s/:host .*/:host \"${UXBOX_SMTP_HOST}\"/g" \
-e "s/:port .*/:port \"${UXBOX_SMTP_PORT}\"/g" \ echo "# ~~~~~" >> $APP_CONFIG
-e "s/:user .*/:user \"${UXBOX_SMTP_USER}\"/g" \ echo "# Security Configuration" >> $APP_CONFIG
-e "s/:pass .*/:pass \"${UXBOX_SMTP_PASSWORD}\"/g" \ echo "# ~~~~~" >> $APP_CONFIG
-e "s/:ssl .*/:ssl \"${UXBOX_SMTP_SSL}\"/g" \ echo "secret=${UXBOX_SECRET}" >> $APP_CONFIG
-e "s/:tls .*/:tls \"${UXBOX_SMTP_TLS}\"/g" \
-e "s/:enabled .*/:enabled \"${UXBOX_SMTP_ENABLED}\"/g" \ -e "s/:host .*/:host \"${UXBOX_DEBUG}" >> $APP_CONFIG
\
-e "s/:host .*/:host \"${UXBOX_MAIL_REPLY}\"/g" \ echo "# ~~~~~" >> $APP_CONFIG
-e "s/:port .*/:port \"${UXBOX_MAIL_FROM}\"/g" \ echo "# SMTP Configuration" >> $APP_CONFIG
\ echo "# ~~~~~" >> $APP_CONFIG
-e "s/:adapter .*/:adapter \"${UXBOX_DB_TYPE}\"/g" \ echo "smtp.host=${UXBOX_SMTP_HOST}" >> $APP_CONFIG
-e "s/:username .*/:username \"${UXBOX_DB_USER}\"/g" \ echo "smtp.port=${UXBOX_SMTP_PORT}" >> $APP_CONFIG
-e "s/:password .*/:password \"${UXBOX_DB_PASSWORD}\"/g" \ echo "smtp.user=${UXBOX_SMTP_USER}" >> $APP_CONFIG
-e "s/:database-name .*/:database-name \"${UXBOX_DB_NAME}\"/g" \ echo "smtp.pass=${UXBOX_SMTP_PASSWORD}" >> $APP_CONFIG
-e "s/:server-name .*/:server-name \"${UXBOX_DB_HOST}\"/g" \ echo "smtp.ssl=${UXBOX_SMTP_SSL}" >> $APP_CONFIG
-e "s/:port-number .*/:port-number \"${UXBOX_DB_PORT}\"/g" \ echo "smtp.tls=${UXBOX_SMTP_TLS}" >> $APP_CONFIG
./config/default.edn echo "smtp.enabled=${UXBOX_SMTP_ENABLED}" >> $APP_CONFIG
echo "# ~~~~~" >> $APP_CONFIG
echo "# Email Configuration" >> $APP_CONFIG
echo "# ~~~~~" >> $APP_CONFIG
echo "email.host=${UXBOX_MAIL_REPLY}" >> $APP_CONFIG
echo "email.port=${UXBOX_MAIL_FROM}" >> $APP_CONFIG
echo "# ~~~~~" >> $APP_CONFIG
echo "# Database Configuration" >> $APP_CONFIG
echo "# ~~~~~" >> $APP_CONFIG
echo "database.adapter=${UXBOX_DB_TYPE}" >> $APP_CONFIG
echo "database.username=${UXBOX_DB_USER}" >> $APP_CONFIG
echo "database.password=${UXBOX_DB_PASSWORD}" >> $APP_CONFIG
echo "database.database-name=${UXBOX_DB_NAME}" >> $APP_CONFIG
echo "database.server-name=${UXBOX_DB_HOST}" >> $APP_CONFIG
echo "database.port-number=${UXBOX_DB_PORT}" >> $APP_CONFIG
echo "Configuration generated."
else
echo "Configuration found."
fi
# TODO Find how to actually pass configuration file to JAR
echo 'Running backend' echo 'Running backend'
java -jar /home/uxbox/uxbox-backend.jar exec "$@"

View file

@ -37,14 +37,23 @@ RUN apt-get update && \
make -j2 && \ make -j2 && \
make install && \ make install && \
cd .. && \ cd .. && \
rm -rf ./imagemagick; \ rm -rf ./imagemagick
git clone https://github.com/creationix/nvm.git .nvm; \
bash -c "source .nvm/nvm.sh && nvm install v7.7.1"; \ ENV NVM_DIR="/home/uxbox/.nvm"
bash -c "source .nvm/nvm.sh && nvm alias default v7.7.1"; \
.nvm/nvm.sh RUN useradd -m -g users -s /bin/bash uxbox; \
passwd uxbox -d; \
echo "uxbox ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
USER uxbox
WORKDIR /home/uxbox
COPY ./scripts/lein /home/uxbox/.local/bin/lein COPY ./scripts/lein /home/uxbox/.local/bin/lein
RUN bash -c "/home/uxbox/.local/bin/lein version" RUN git clone https://github.com/creationix/nvm.git .nvm; \
bash -c "source .nvm/nvm.sh && nvm install v7.7.1"; \
bash -c "source .nvm/nvm.sh && nvm alias default v7.7.1"; \
bash -c ".nvm/nvm.sh"; \
bash -c "/home/uxbox/.local/bin/lein version"
ENV API_URL http://127.0.0.1:6060/api ENV API_URL http://127.0.0.1:6060/api