github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/scripts/docker/cozy-app-dev/Dockerfile (about) 1 # This Dockerfile should be used to create an environment to develop 2 # applications for cozy-stack. It installs couchdb 2 and the cozy-stack. 3 # It should not be used for hosting your cozy cloud in production. 4 5 6 # Multi-stage image: this step builds cozy-stack (and mailhog) 7 FROM golang:1.22-bullseye as build 8 WORKDIR /app 9 10 # MailHog 11 ENV MAILHOG_SRC_URL=https://github.com/mailhog/MailHog/releases/download/v1.0.0/MailHog_linux_amd64 \ 12 MAILHOG_SRC_SHA256=ba921e04438e176c474d533447ae64707ffcdd1230f0153f86cb188d348f25c0 13 RUN set -eu; curl -fsSL "$MAILHOG_SRC_URL" -o MailHog \ 14 && echo "$MAILHOG_SRC_SHA256 MailHog" | sha256sum -c - \ 15 && chmod +x MailHog 16 17 # Use docker layer caching to avoid redownloading go modules if the code has 18 # changed but not the dependencies. 19 COPY go.mod . 20 COPY go.sum . 21 RUN go mod download 22 23 # Build cozy-stack 24 COPY . . 25 RUN ./scripts/build.sh dev 26 27 28 # Multi-stage image: the main image 29 FROM debian:bullseye-slim 30 31 # cozy-stack 32 ENV COZY_STACK_HOST=cozy.localhost \ 33 COZY_STACK_PORT=8080 \ 34 COZY_STACK_PATH=cozy-stack \ 35 PATH="$PATH:/opt/couchdb/bin" 36 37 ARG DEBIAN_FRONTEND=noninteractive 38 39 RUN set -eux; apt-get update \ 40 && apt-get install -y --no-install-recommends \ 41 ca-certificates \ 42 curl \ 43 apt-transport-https \ 44 gnupg \ 45 openssl \ 46 fonts-lato \ 47 imagemagick \ 48 git \ 49 && curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor > /usr/share/keyrings/couchdb-archive-keyring.gpg \ 50 && echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ bullseye main" > /etc/apt/sources.list.d/couchdb.list \ 51 && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor > /usr/share/keyrings/nodesource.gpg \ 52 && echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \ 53 && apt update \ 54 && echo "couchdb couchdb/mode select standalone" | debconf-set-selections \ 55 && echo "couchdb couchdb/mode seen true" | debconf-set-selections \ 56 && echo "couchdb couchdb/bindaddress string 0.0.0.0" | debconf-set-selections \ 57 && echo "couchdb couchdb/bindaddress seen true" | debconf-set-selections \ 58 && echo "couchdb couchdb/adminpass password password" | debconf-set-selections \ 59 && echo "couchdb couchdb/adminpass seen true" | debconf-set-selections \ 60 && echo "couchdb couchdb/adminpass_again password password" | debconf-set-selections \ 61 && echo "couchdb couchdb/adminpass_again seen true" | debconf-set-selections \ 62 && echo "couchdb couchdb/cookie string elmo" | debconf-set-selections \ 63 && echo "couchdb couchdb/cookie seen true" | debconf-set-selections \ 64 && apt install -y --no-install-recommends couchdb=3.2.2* nodejs \ 65 && rm -rf /var/lib/apt/lists/* \ 66 && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ 67 && node --version \ 68 # Cleanup 69 && apt-get autoremove -y && apt-get clean \ 70 && mkdir -p /data/cozy-app && mkdir -p /data/cozy-storage 71 72 73 COPY --from=build \ 74 /app/cozy-stack \ 75 /app/scripts/docker/cozy-app-dev/docker-entrypoint.sh \ 76 /app/scripts/docker/cozy-app-dev/cozy-app-dev.sh \ 77 /app/scripts/konnector-node-run.sh \ 78 /app/MailHog \ 79 /usr/bin/ 80 81 EXPOSE 8080 6060 8025 5984 82 ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]