mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-25 03:10:24 +03:00
49 lines
2.0 KiB
Docker
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"]
|