Newer
Older
# This Dockerfile should be used to create an environment to develop
# applications for cozy-stack. It installs couchdb 2 and the cozy-stack.
# It should not be used for hosting your cozy cloud in production.
# Multi-stage image: this step builds cozy-stack (and mailhog)
ENV MAILHOG_SRC_URL=https://github.com/mailhog/MailHog/releases/download/v1.0.0/MailHog_linux_amd64 \
MAILHOG_SRC_SHA256=ba921e04438e176c474d533447ae64707ffcdd1230f0153f86cb188d348f25c0
RUN set -eu; curl -fsSL "$MAILHOG_SRC_URL" -o MailHog \
&& echo "$MAILHOG_SRC_SHA256 MailHog" | sha256sum -c - \
&& chmod +x MailHog
# Use docker layer caching to avoid redownloading go modules if the code has
# changed but not the dependencies.
COPY go.mod .
COPY go.sum .
RUN go mod download
RUN ./scripts/build.sh dev
# Multi-stage image: the main image
FROM debian:stretch-slim
ENV COZY_STACK_HOST=cozy.localhost \
COZY_STACK_PORT=8080 \
COZY_STACK_PATH=cozy-stack \
COUCHDB_SRC_URL=https://dist.apache.org/repos/dist/release/couchdb/source/2.3.1/apache-couchdb-2.3.1.tar.gz \
COUCHDB_SRC_SHA256=43eb8cec41eb52871bf22d35f3e2c2ce5b806ebdbce3594cf6b0438f2534227d \
ARG DEBIAN_FRONTEND=noninteractive
RUN sed -i s/deb.debian.org/archive.debian.org/g /etc/apt/sources.list
RUN sed -i 's|security.debian.org|archive.debian.org/|g' /etc/apt/sources.list
RUN sed -i '/stretch-updates/d' /etc/apt/sources.list
RUN set -eux; apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
erlang-nox \
erlang-reltool \
erlang-dev \
libicu-dev \
libmozjs185-dev \
openssl \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir /usr/src/couchdb \
&& curl -fsSL "$COUCHDB_SRC_URL" -o couchdb.tar.gz \
&& echo "$COUCHDB_SRC_SHA256 couchdb.tar.gz" | sha256sum -c - \
&& tar -xzf couchdb.tar.gz -C /usr/src/couchdb --strip-components=1 \
&& rm couchdb.tar.gz \
&& cd /usr/src/couchdb \
&& ./configure --disable-docs \
&& make release \
&& rm -rf /usr/src/couchdb \
&& curl -fsSL https://nodejs.org/dist/v12.9.1/node-v12.9.1-linux-x64.tar.xz -o node-v12.9.1-linux-x64.tar.xz \
&& tar -xJf "node-v12.9.1-linux-x64.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& rm "node-v12.9.1-linux-x64.tar.xz" \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs \
&& node --version \
# Cleanup
&& apt-get purge -y \
build-essential \
erlang-dev \
libicu-dev \
libmozjs185-dev \
&& printf "[chttpd]\\nbind_address = 0.0.0.0\\n" \
> /usr/local/couchdb/etc/local.ini \
&& apt-get autoremove -y && apt-get clean \
&& mkdir -p /data/cozy-app && mkdir -p /data/cozy-storage
/app/cozy-stack \
/app/scripts/docker-entrypoint.sh \
/app/scripts/cozy-app-dev.sh \
/app/scripts/konnector-node-run.sh \
EXPOSE 8080 6060 8025 5984
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]