-
Notifications
You must be signed in to change notification settings - Fork 4
Description
I spent some time crafting a Dockerfile, docker-compose.yml and .env file to run this installer quicker with minimal to no environment configuration. I added the following files to the root directory :
.env
WEB_PORT=8090
MYSQL_PORT=3316
PHPMYADMIN_PORT=8091
MYSQL_ROOT_PASSWORD=gymone_root_password
MYSQL_DATABASE=gymone_db
MYSQL_USER=gymone_user
MYSQL_PASSWORD=gymone_password
APP_URL=http://localhost:8090
APP_ENV=production
Dockerfile
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y
apache2
php8.1
php8.1-cli
php8.1-common
php8.1-mysql
php8.1-zip
php8.1-gd
php8.1-mbstring
php8.1-curl
php8.1-xml
php8.1-bcmath
php8.1-bz2
php8.1-calendar
php8.1-exif
php8.1-ftp
php8.1-gettext
php8.1-mysqli
php8.1-pdo-mysql
php8.1-pdo-sqlite
php8.1-phar
php8.1-readline
php8.1-fileinfo
php8.1-simplexml
libapache2-mod-php8.1
curl
&& apt-get clean
&& rm -rf /var/lib/apt/lists/*
RUN a2enmod rewrite
RUN echo '<Directory /var/www/html>\n
Options FollowSymLinks\n
AllowOverride All\n
Require all granted\n
' > /etc/apache2/conf-available/gymone.conf
&& a2enconf gymone
RUN echo "memory_limit = 256M" > /etc/php/8.1/apache2/conf.d/gymone.ini &&
echo "upload_max_filesize = 50M" >> /etc/php/8.1/apache2/conf.d/gymone.ini &&
echo "post_max_size = 50M" >> /etc/php/8.1/apache2/conf.d/gymone.ini &&
echo "max_execution_time = 300" >> /etc/php/8.1/apache2/conf.d/gymone.ini
WORKDIR /var/www/html
COPY . .
RUN chmod -R 777 /var/www/html
&& chown -R www-data:www-data /var/www/html
RUN echo '#!/bin/bash\n
chmod -R 777 /var/www/html\n
chown -R www-data:www-data /var/www/html\n
service apache2 start\n
tail -f /var/log/apache2/error.log' > /entrypoint.sh
&& chmod +x /entrypoint.sh
EXPOSE 80
CMD ["/entrypoint.sh"]
docker-compose.yml
version: '3.8'
services:
gymone-web:
build: .
container_name: gymone-app
ports:
- "${WEB_PORT:-8090}:80"
volumes:
# For development - mount current directory
- ./:/var/www/html
# Named volumes for persistent data
- gymone-data:/var/www/html/data
- gymone-uploads:/var/www/html/uploads
- gymone-cache:/var/www/html/cache
environment:
- APACHE_RUN_USER=www-data
- APACHE_RUN_GROUP=www-data
- DEBIAN_FRONTEND=noninteractive
networks:
- gymone-network
depends_on:
- gymone-mysql
restart: unless-stopped
gymone-mysql:
image: mysql:8.0-debian
container_name: gymone-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-gymone_root_password}
MYSQL_DATABASE: ${MYSQL_DATABASE:-gymone_db}
MYSQL_USER: ${MYSQL_USER:-gymone_user}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-gymone_password}
ports:
- "${MYSQL_PORT:-3316}:3306"
volumes:
- mysql-data:/var/lib/mysql
networks:
- gymone-network
command: --default-authentication-plugin=mysql_native_password
gymone-phpmyadmin:
image: phpmyadmin:latest
container_name: gymone-phpmyadmin
restart: unless-stopped
environment:
PMA_HOST: gymone-mysql
PMA_USER: root
PMA_PASSWORD: ${MYSQL_ROOT_PASSWORD:-gymone_root_password}
UPLOAD_LIMIT: 50M
ports:
- "${PHPMYADMIN_PORT:-8091}:80"
networks:
- gymone-network
depends_on:
- gymone-mysql
volumes:
mysql-data:
driver: local
gymone-data:
driver: local
gymone-uploads:
driver: local
gymone-cache:
driver: local
networks:
gymone-network:
driver: bridge
From there you can just run docker compose up -d --build. I can create a pull request if you want. Cheers !