mirror of
https://github.com/ACINQ/eclair.git
synced 2024-11-20 18:50:43 +01:00
892770b1ed
* updated to scalatest 3.0.5 * use scalatest runner instead of junit Output is far more readable, and makes console (incl. travis) reports actually usable. Turned off test logs as error reporting is enough to figure out what happens. The only downside is that we can't use junit's categories to group tests, like we did for docker related tests. We could use nested suites, but that seems to be overkill so I just removed the categories. Users will only have the possibility to either skip/run all tests. * update scala-maven-plugin to 3.4.2 NB: This requires maven 3.5.4, which means that we currently need to manually install maven on travis. Also updated Docker java version to 8u181 (8u171 for compiling).
57 lines
2.5 KiB
Docker
57 lines
2.5 KiB
Docker
FROM openjdk:8u171-jdk-alpine as BUILD
|
|
|
|
# Setup maven, we don't use https://hub.docker.com/_/maven/ as it declare .m2 as volume, we loose all mvn cache
|
|
# We can alternatively do as proposed by https://github.com/carlossg/docker-maven#packaging-a-local-repository-with-the-image
|
|
# this was meant to make the image smaller, but we use multi-stage build so we don't care
|
|
|
|
RUN apk add --no-cache curl tar bash
|
|
|
|
ARG MAVEN_VERSION=3.5.4
|
|
ARG USER_HOME_DIR="/root"
|
|
ARG SHA=ce50b1c91364cb77efe3776f756a6d92b76d9038b0a0782f7d53acf1e997a14d
|
|
ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries
|
|
|
|
RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
|
|
&& curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
|
|
&& echo "${SHA} /tmp/apache-maven.tar.gz" | sha256sum -c - \
|
|
&& tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
|
|
&& rm -f /tmp/apache-maven.tar.gz \
|
|
&& ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
|
|
|
|
ENV MAVEN_HOME /usr/share/maven
|
|
ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"
|
|
|
|
# Let's fetch eclair dependencies, so that Docker can cache them
|
|
# This way we won't have to fetch dependencies again if only the source code changes
|
|
# The easiest way to reliably get dependencies is to build the project with no sources
|
|
WORKDIR /usr/src
|
|
COPY pom.xml pom.xml
|
|
COPY eclair-core/pom.xml eclair-core/pom.xml
|
|
COPY eclair-node/pom.xml eclair-node/pom.xml
|
|
COPY eclair-node-gui/pom.xml eclair-node-gui/pom.xml
|
|
RUN mkdir -p eclair-core/src/main/scala && touch eclair-core/src/main/scala/empty.scala
|
|
# Blank build. We only care about eclair-node, and we use install because eclair-node depends on eclair-core
|
|
RUN mvn install -pl eclair-node -am
|
|
RUN mvn clean
|
|
|
|
# Only then do we copy the sources
|
|
COPY . .
|
|
|
|
# And this time we can build in offline mode, specifying 'notag' instead of git commit
|
|
RUN mvn package -pl eclair-node -am -DskipTests -Dgit.commit.id=notag -Dgit.commit.id.abbrev=notag -o
|
|
# It might be good idea to run the tests here, so that the docker build fail if the code is bugged
|
|
|
|
# We currently use a debian image for runtime because of some jni-related issue with sqlite
|
|
FROM openjdk:8u181-jre-slim
|
|
WORKDIR /app
|
|
# Eclair only needs the eclair-node-*.jar to run
|
|
COPY --from=BUILD /usr/src/eclair-node/target/eclair-node-*.jar .
|
|
RUN ln `ls` eclair-node.jar
|
|
|
|
ENV ECLAIR_DATADIR=/data
|
|
ENV JAVA_OPTS=
|
|
|
|
RUN mkdir -p "$ECLAIR_DATADIR"
|
|
VOLUME [ "/data" ]
|
|
|
|
ENTRYPOINT java $JAVA_OPTS -Declair.datadir=$ECLAIR_DATADIR -jar eclair-node.jar |