mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-07 01:54:27 +00:00
165 lines
5.2 KiB
Docker
165 lines
5.2 KiB
Docker
|
|
FROM alchemyfr/phraseanet-base:1.2.2 AS builder
|
|
|
|
COPY --from=composer:2.1.6 /usr/bin/composer /usr/bin/composer
|
|
|
|
# Node Installation (node + yarn)
|
|
|
|
RUN cd /tmp \
|
|
&& curl -O https://nodejs.org/download/release/v10.24.1/node-v10.24.1-linux-x64.tar.gz \
|
|
&& tar -xvf node-v10.24.1-linux-x64.tar.gz \
|
|
&& cp -Rf node-v10.24.1-linux-x64/* /usr/ \
|
|
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
|
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
yarn \
|
|
nano \
|
|
vim \
|
|
iputils-ping \
|
|
zsh \
|
|
ssh \
|
|
telnet \
|
|
autoconf \
|
|
libtool \
|
|
python3 \
|
|
pkg-config \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists \
|
|
&& git clone https://github.com/robbyrussell/oh-my-zsh.git /bootstrap/.oh-my-zsh \
|
|
&& mkdir -p /var/alchemy/Phraseanet \
|
|
&& chown -R app:app /var/alchemy
|
|
|
|
# Set the php memory_limit
|
|
RUN echo 'memory_limit = 2048M' >> /usr/local/etc/php/conf.d/docker-php-ram-limit.ini
|
|
|
|
WORKDIR /var/alchemy/Phraseanet
|
|
|
|
USER app
|
|
|
|
# Warm up composer cache for faster builds
|
|
COPY docker/caching/composer.* ./
|
|
RUN composer install --prefer-dist --no-dev --no-progress --classmap-authoritative --no-interaction --no-scripts
|
|
# && rm -rf vendor composer.*
|
|
# End warm up
|
|
|
|
COPY --chown=app . .
|
|
|
|
RUN make install
|
|
|
|
ADD ./docker/builder/root /
|
|
|
|
# SSH Private repo
|
|
ARG SSH_PRIVATE_KEY
|
|
ARG PHRASEANET_PLUGINS
|
|
|
|
RUN ( \
|
|
test ! -z "${SSH_PRIVATE_KEY}" \
|
|
&& mkdir -p ~/.ssh \
|
|
&& echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa \
|
|
# make sure github domain.com is accepted
|
|
&& ssh-keyscan -H github.com >> ~/.ssh/known_hosts \
|
|
&& chmod 600 ~/.ssh/id_rsa \
|
|
) || echo "Skip SSH key"
|
|
|
|
RUN ./docker/phraseanet/plugins/console install
|
|
|
|
ENTRYPOINT ["/bootstrap/entrypoint.sh"]
|
|
|
|
CMD []
|
|
|
|
#########################################################################
|
|
# Phraseanet install and setup application image
|
|
#########################################################################
|
|
|
|
FROM alchemyfr/phraseanet-base:1.2.2 AS phraseanet-setup
|
|
|
|
COPY --from=builder --chown=app /var/alchemy/Phraseanet /var/alchemy/Phraseanet
|
|
ADD ./docker/phraseanet/root /
|
|
WORKDIR /var/alchemy/Phraseanet
|
|
ENTRYPOINT ["docker/phraseanet/setup/entrypoint.sh"]
|
|
CMD []
|
|
|
|
|
|
#########################################################################
|
|
# Phraseanet web application image
|
|
#########################################################################
|
|
|
|
FROM alchemyfr/phraseanet-base:1.2.2 AS phraseanet-fpm
|
|
|
|
COPY --from=builder --chown=app /var/alchemy/Phraseanet /var/alchemy/Phraseanet
|
|
ADD ./docker/phraseanet/root /
|
|
WORKDIR /var/alchemy/Phraseanet
|
|
ENTRYPOINT ["docker/phraseanet/fpm/entrypoint.sh"]
|
|
CMD ["php-fpm", "-F"]
|
|
|
|
#########################################################################
|
|
# Phraseanet worker application image
|
|
#########################################################################
|
|
|
|
FROM alchemyfr/phraseanet-base:1.2.2 AS phraseanet-worker
|
|
|
|
COPY --from=builder --chown=app /var/alchemy/Phraseanet /var/alchemy/Phraseanet
|
|
ADD ./docker/phraseanet/root /
|
|
WORKDIR /var/alchemy/Phraseanet
|
|
|
|
RUN apt-get update
|
|
RUN apt-get install -y --no-install-recommends supervisor
|
|
RUN apt-get install -y --no-install-recommends logrotate
|
|
RUN mkdir -p /var/log/supervisor \
|
|
&& chown -R app: /var/log/supervisor \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists
|
|
|
|
COPY ./docker/phraseanet/worker/supervisor.conf /etc/supervisor/
|
|
COPY ./docker/phraseanet/worker/logrotate/worker /etc/logrotate.d/
|
|
|
|
RUN chmod 644 /etc/logrotate.d/worker
|
|
|
|
ENTRYPOINT ["docker/phraseanet/worker/entrypoint.sh"]
|
|
CMD ["/bin/bash", "bin/run-worker.sh"]
|
|
|
|
#########################################################################
|
|
# phraseanet-nginx
|
|
#########################################################################
|
|
|
|
FROM nginx:1.27.2-alpine AS phraseanet-nginx
|
|
RUN adduser --uid 1000 --disabled-password app
|
|
RUN apk add --update apache2-utils \
|
|
&& rm -rf /var/cache/apk/*
|
|
ADD ./docker/nginx/root /
|
|
COPY --from=builder /var/alchemy/Phraseanet/www /var/alchemy/Phraseanet/www
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
|
|
CMD ["nginx", "-g", "daemon off;"]
|
|
HEALTHCHECK CMD wget --spider http://127.0.0.1/login || nginx -s reload || exit 1
|
|
|
|
#########################################################################
|
|
# phraseanet adapted simplesaml service provider
|
|
#########################################################################
|
|
|
|
FROM alchemyfr/phraseanet-base:1.2.2 AS phraseanet-saml-sp
|
|
RUN apt-get update \
|
|
&& apt-get install -y \
|
|
apt-transport-https \
|
|
ca-certificates \
|
|
gnupg2 \
|
|
wget \
|
|
nginx \
|
|
zlib1g-dev \
|
|
automake \
|
|
git \
|
|
libmcrypt-dev \
|
|
libzmq3-dev \
|
|
libtool \
|
|
locales \
|
|
gettext \
|
|
mcrypt \
|
|
libldap2-dev \
|
|
&& curl -Ls https://github.com/simplesamlphp/simplesamlphp/releases/download/simplesamlphp-1.10.0/simplesamlphp-1.10.0.tar.gz | tar xzvf - -C /var/www/
|
|
ADD ./docker/phraseanet/saml-sp/root /
|
|
ENTRYPOINT ["/bootstrap/entrypoint.sh"]
|
|
CMD ["/bootstrap/bin/start-servers.sh"]
|
|
HEALTHCHECK CMD wget --spider http://127.0.0.1/ || nginx -s reload || exit
|