Files
BookStack/dev/docker/Dockerfile
2025-10-06 13:06:12 +01:00

49 lines
2.0 KiB
Docker

FROM ubuntu:24.04
# Accept build arguments
ARG USER_ID=1000
ARG GROUP_ID=1000
ARG USERNAME=devuser
# Install dependencies and some build env tools
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y \
bash git tmux vim nano htop curl supervisor unzip sudo \
mysql-server-8.0 apache2 php8.3 \
php8.3-fpm php8.3-curl php8.3-mbstring php8.3-ldap php8.3-xml php8.3-zip php8.3-gd php8.3-mysql php8.3-xdebug
# Create group and user with specific IDs, and give user sudo access (for service management)
RUN userdel -r ubuntu && \
groupadd -g ${GROUP_ID} ${USERNAME} && \
useradd -u ${USER_ID} -g ${GROUP_ID} -m -s /bin/bash ${USERNAME} && \
echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# Install build tools (composer/node/npm)
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
mkdir -p "/home/${USERNAME}/.nvm" && export NVM_DIR="/home/${USERNAME}/.nvm" && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash && \
\. "/home/${USERNAME}/.nvm/nvm.sh" && \
nvm install 22 && \
chown -R ${USERNAME} "/home/${USERNAME}/.nvm" && \
echo 'export NVM_DIR="${HOME}/.nvm" && source "$NVM_DIR/nvm.sh"' >> "/home/${USERNAME}/.bashrc"
# Configure apache, php & mysql
RUN a2dissite 000-default.conf && \
a2enmod rewrite proxy_fcgi setenvif && \
a2enconf php8.3-fpm && \
sed -i "s/www-data/${USERNAME}/g" "/etc/php/8.3/fpm/pool.d/www.conf" && \
sed -i "s/www-data/${USERNAME}/g" "/etc/apache2/envvars" && \
chmod 755 /var/run/mysqld
# Copy required configuration & entrypoint script
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY apache.conf /etc/apache2/sites-enabled/bookstack.conf
COPY setup.sql /setup.sql
COPY entrypoint.sh /entrypoint.sh
# Set our user, working directory, entrypoint and default command
USER ${USERNAME}
WORKDIR /app
ENTRYPOINT ["/entrypoint.sh"]
CMD ["/bin/bash"]