Dockerfile 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. FROM node:20-bookworm-slim AS node
  2. RUN npm -g install corepack && corepack enable pnpm
  3. RUN rm /usr/local/bin/yarn /usr/local/bin/yarnpkg
  4. FROM ruby:3.2.7-slim-bookworm AS builder
  5. ARG DEBIAN_FRONTEND=noninteractive
  6. ARG RAILS_ENV=production
  7. ARG ZAMMAD_DIR=/opt/zammad
  8. ARG COMMIT_SHA
  9. COPY --from=node /usr/local/lib/node_modules /usr/local/lib/node_modules
  10. COPY --from=node /usr/local/bin /usr/local/bin
  11. SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"]
  12. WORKDIR ${ZAMMAD_DIR}
  13. COPY . .
  14. RUN contrib/docker/setup.sh builder
  15. # note: zammad is currently incompatible to alpine because of:
  16. # https://github.com/docker-library/ruby/issues/113
  17. FROM ruby:3.2.7-slim-bookworm
  18. ARG DEBIAN_FRONTEND=noninteractive
  19. ARG ZAMMAD_USER=zammad
  20. ENV RAILS_ENV=production
  21. ENV RAILS_LOG_TO_STDOUT=true
  22. ENV ZAMMAD_DIR=/opt/zammad
  23. WORKDIR ${ZAMMAD_DIR}
  24. COPY --from=builder ${ZAMMAD_DIR} .
  25. COPY --from=builder /usr/local/bundle /usr/local/bundle
  26. COPY --from=builder ${ZAMMAD_DIR}/contrib/docker/docker-entrypoint.sh /
  27. RUN contrib/docker/setup.sh runner
  28. USER zammad:zammad
  29. ENTRYPOINT ["/docker-entrypoint.sh"]
  30. # Set labels to help portainer.io admins to access the shell and rails console.
  31. LABEL io.portainer.commands.bash-via-entrypoint="/docker-entrypoint.sh /bin/bash"
  32. LABEL io.portainer.commands.rails-console="/docker-entrypoint.sh bundle exec rails c"