Improve Dockerfile to use multi-stage builds
Move the daemon build inside the daemon repo's own dockerfile.
Change-Id: Ib5aa002ec38a44c5ceafe7af0501d0a40e32a8c2
diff --git a/Dockerfile b/Dockerfile
index 6b2c18c..c827f7d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,89 +1,24 @@
-FROM ubuntu:22.04
+FROM jami-daemon
-WORKDIR /app
+WORKDIR /web-client
+ENV LD_LIBRARY_PATH=/daemon/src/.libs
+ENV SECRET_KEY_BASE=test123
-ARG DEBIAN_FRONTEND=noninteractive
-RUN apt-get update && apt-get install -y \
- autoconf \
- automake \
- autopoint \
- bison \
- build-essential \
- cmake \
- curl \
- git \
- libarchive-dev \
- libasio-dev \
- libasound2-dev \
- libdbus-1-dev \
- libdbus-c++-dev \
- libexpat1-dev \
- libfmt-dev \
- libgmp-dev \
- nettle-dev \
- libgnutls28-dev \
- libjsoncpp-dev \
- libmsgpack-dev \
- libnatpmp-dev \
- libopus-dev \
- libpulse-dev \
- libspeex-dev \
- libspeexdsp-dev \
- libssl-dev \
- libtool \
- libudev-dev \
- libupnp-dev \
- libva-dev \
- libvdpau-dev \
- libvpx-dev \
- libx264-dev \
- libyaml-cpp-dev \
- libhttp-parser-dev \
- libwebrtc-audio-processing-dev \
- libsecp256k1-dev \
- nasm \
- pkg-config \
- yasm
-
-# Install Node
-RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \
- apt-get install -y nodejs && \
- npm install -g node-gyp
-
-# Install latest Swig (4.1)
-WORKDIR /swig
-RUN git clone https://github.com/swig/swig.git && \
- cd swig && \
- ./autogen.sh && \
- ./configure && \
- make -j$(nproc) && \
- make install
-
-WORKDIR /app
-COPY . .
-WORKDIR /app/daemon
-
-# Build daemon dependencies
-RUN mkdir -p contrib/native && \
- cd contrib/native && \
- ../bootstrap && \
- make -j$(nproc)
-
-# Build the daemon
-RUN ./autogen.sh && \
- ./configure --with-nodejs && \
- make -j$(nproc)
-
-WORKDIR /app
-
+# Install dependencies
RUN apt-get update && apt-get install -y \
lldb \
liblldb-dev
-ENV LD_LIBRARY_PATH=/app/daemon/src/.libs
-ENV SECRET_KEY_BASE=test123
-RUN npm install && \
- ln -s /app/daemon/bin/nodejs/build/Release/jamid.node jamid.node && \
- npm run build
+# Create a symlink to the daemon node app
+RUN ln -s /daemon/bin/nodejs/build/Release/jamid.node jamid.node
+
+COPY package*.json ./
+COPY client/package*.json client/
+
+RUN npm ci
+
+COPY . .
+
+RUN npm run build
CMD ["npm", "start"]