Skip to content
Snippets Groups Projects
Dockerfile 3.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • # 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)
    
    Bruno Michel's avatar
    Bruno Michel committed
    FROM golang:1.19 as build
    
    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
    
    
    # Build cozy-stack
    COPY . .
    
    RUN ./scripts/build.sh dev
    
    
    
    # Multi-stage image: the main image
    
    FROM debian:stretch-slim
    
    # cozy-stack
    
    ENV COZY_STACK_HOST=cozy.localhost \
    
    	COZY_STACK_PORT=8080 \
    	COZY_STACK_PATH=cozy-stack \
    
    aeris's avatar
    aeris committed
    	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 \
    
    	PATH="$PATH:/usr/local/couchdb/bin"
    
    ARG DEBIAN_FRONTEND=noninteractive
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    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 \
    
        ca-certificates \
        curl \
    
        libmozjs185-1.0 \
    
        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 \
    
      && mv ./rel/couchdb /usr/local \
    
      && 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 \
    
    Bruno Michel's avatar
    Bruno Michel committed
      && 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
    
    COPY --from=build \
    
      /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"]