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"]