Compare commits

..

9 Commits

Author SHA1 Message Date
5c3076ba6f - Fix database healthcheck! 2024-10-29 09:04:56 +01:00
50691ad48b - Add database healthcheck & webapp service depencies. 2024-10-29 08:51:33 +01:00
04262b54e9 - Fix database restart in compose file. 2024-10-29 08:45:23 +01:00
ad03b772e6 - Add ampache crontab. 2024-10-20 17:25:52 +02:00
5859c4b949 - Now use rx3/php-apache-mga9:1.3.3 image:
- PHP memory limit increased from 128M to 512M,
  - mpm support,
  - pwauth support,
- Remove now unneeded pwauth install & PHP config.
- Now use rx3/mariadb-mga9:1.0.2
- Variabilization of external server ports in env & compose file,
- Now use docker_tools for .env building,
- local directory normalization,
- fix ampache.cfg.php.dist initialization.
2024-10-06 12:21:30 +02:00
a657d46d27 - Switch to rx3/php-apache-mga9:1.3.2 image,
- Switch to rx3/mariadb-mga9:1.0.1 image,
- Fix /usr/bin/pwauth group & mode,
- Fix Ampache Repository/Model/User.php: remove email lookup for new user.
2024-08-28 18:01:42 +02:00
10495dbfa5 - Switch to rx3/mariadb-mga9:1.0.0 image,
- Now full Rx3 based!
2024-08-27 23:43:01 +02:00
d49d23a60a - Switch to rx3/php-apache-mga9:1.3.1 image,
- Minor compose file update.
2024-08-27 01:03:15 +02:00
b7ba76ef53 - Switch to rx3/php-apache-mga9:1.3.0 image,
- Configure php.ini,
- Update compose & Dockerfile.
2024-08-27 00:04:39 +02:00
14 changed files with 308 additions and 89 deletions

7
.env
View File

@ -1,7 +0,0 @@
# Rx3 Ampache Mageia-9 Docker Image
#-------------------------------------------------------------------------------
IMG_NAME="ampache-mga9"
IMG_FULL_NAME="Rx3 Ampache Mageia-9 Docker Image"
IMG_VERSION="1.0.0"
IMG_MAINTAINER='"Arnaud G. GIBERT" <arnaud@rx3.net>'

View File

@ -1,7 +1,9 @@
#
#-------------------------------------------------------------------------------
FROM docker.xor.rx3:5000/rx3/php-apache-mga9:1.2.0
ARG IMG_URL_PREFIX="rx3"
FROM ${IMG_URL_PREFIX}/php-apache-mga9:1.3.3
ARG IMG_NAME
ARG IMG_FULL_NAME
@ -10,7 +12,7 @@ ARG IMG_MAINTAINER
ARG AMPACHE_VERSION=6.6.0
ENV DISABLE_INOTIFYWAIT_CLEAN 0
ENV DISABLE_INOTIFYWAIT_CLEAN=0
LABEL org.rx3.${IMG_NAME}.name=${IMG_FULL_NAME}
LABEL org.rx3.${IMG_NAME}.version=${IMG_VERSION}
@ -18,20 +20,41 @@ LABEL org.rx3.${IMG_NAME}.maintainer=${IMG_MAINTAINER}
LABEL maintainer=${IMG_MAINTAINER}
RUN urpmi --force wget ffmpeg lib64opencl1 flac inotify-tools lame lib64avcodec59 lib64event7 lib64mp3lame-devel lib64theora-devel lib64vorbis-devel lib64vpx-devel php-iconv php-curl php-gd php-intl php-ldap php-sabre-xml php-zip supervisor vorbis-tools zip unzip pwauth \
&& mkdir -p /var/log/ampache \
&& wget -q -O /tmp/ampache.zip https://github.com/ampache/ampache/releases/download/${AMPACHE_VERSION}/ampache-${AMPACHE_VERSION}_all_php8.2.zip \
&& unzip /tmp/ampache.zip -d /var/www \
&& sed -i -e 's/$transcode_cfg != '"'"'never'"'"'/$transcode_cfg != '"'"'ever'"'"'/' /var/www/src/Module/Util/Waveform.php \
&& cp -f /var/www/public/rest/.htaccess.dist /var/www/public/rest/.htaccess \
&& cp -f /var/www/public/play/.htaccess.dist /var/www/public/play/.htaccess \
&& cp -f /var/www/config/ampache.cfg.php.dist /var/tmp \
&& rm -f /tmp/ampache.zip /var/www/public/.php*cs* /var/www/public/.sc /var/www/public/.scrutinizer.yml /var/www/public/.tgitconfig /var/www/public/.travis.yml /var/www/public/*.md \
&& find /var/www -type d -name ".git*" -print0 | xargs -0 rm -rf {} \
&& chown -R root:root /var/www \
&& chmod -R 775 /var/www \
&& echo -e '#!/bin/bash\n\ncp -f /var/www/config/ampache.cfg.php.dist /var/www/config\nchown -R ${APACHE_UID}:${APACHE_GID} /var/www/config /var/log/ampache\n/usr/local/sbin/apache_init' > /usr/local/sbin/ampache_init \
&& chmod a+x /usr/local/sbin/ampache_init
#---------------------------------------------------------------------------------------------------
ARG AMPACHE='#!/bin/bash \n\
\n\
cp -f /var/tmp/ampache.cfg.php.dist /var/www/config \n\
\n\
chown -R apache:apache /var/www/config /var/log/ampache'
#---------------------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------------
ARG AMPACHE_CRON='# /etc/cron.d/ampache: crontab fragment for ampache server \n\
\n\
PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/sbin \n\
\n\
15 3 * * * apache cd /var/www; php bin/cli run:updateCatalog -v -c -e -a -g >/var/log/ampache/catalog_update.log 2>&1'
#---------------------------------------------------------------------------------------------------
RUN urpmi --force wget ffmpeg lib64opencl1 flac inotify-tools lame lib64avcodec59 lib64event7 lib64mp3lame-devel lib64theora-devel lib64vorbis-devel lib64vpx-devel php-iconv php-curl php-gd php-intl php-ldap php-sabre-xml php-zip vorbis-tools zip unzip \
&& mkdir -p /var/log/ampache \
&& wget -q -O /tmp/ampache.zip https://github.com/ampache/ampache/releases/download/${AMPACHE_VERSION}/ampache-${AMPACHE_VERSION}_all_php8.2.zip \
&& unzip /tmp/ampache.zip -d /var/www \
&& sed -i -e 's/$transcode_cfg != '"'"'never'"'"'/$transcode_cfg != '"'"'ever'"'"'/' /var/www/src/Module/Util/Waveform.php \
&& sed -i -e 's/ || static::getUserRepository()->idByEmail($email) > 0//' /var/www/src/Repository/Model/User.php \
&& cp -f /var/www/public/rest/.htaccess.dist /var/www/public/rest/.htaccess \
&& cp -f /var/www/public/play/.htaccess.dist /var/www/public/play/.htaccess \
&& cp -f /var/www/config/ampache.cfg.php.dist /var/tmp \
&& rm -f /tmp/ampache.zip /var/www/public/.php*cs* /var/www/public/.sc /var/www/public/.scrutinizer.yml /var/www/public/.tgitconfig /var/www/public/.travis.yml /var/www/public/*.md \
&& find /var/www -type d -name ".git*" -print0 | xargs -0 rm -rf {} \
&& chown -R root:root /var/www \
&& chmod -R 775 /var/www \
&& echo -e "${AMPACHE}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/ampache \
&& chmod a+x /etc/init.d/ampache \
&& ln -s /etc/init.d/ampache /etc/rcD.d/S40ampache
VOLUME ["/var/www/html/config"]
@ -40,22 +63,3 @@ VOLUME ["/media"]
EXPOSE 80
ENTRYPOINT ["/usr/local/sbin/ampache_init"]
#COPY data/bin/run.sh data/bin/inotifywait.sh data/bin/cron.sh data/bin/apache2.sh data/bin/mysql.sh data/bin/create_mysql_admin_user.sh data/bin/ampache_cron.sh data/bin/docker-entrypoint.sh /usr/local/bin/
#COPY data/sites-enabled/001-ampache.conf /etc/apache2/sites-available/
#COPY data/apache2/php.ini /etc/php/8.2/apache2/
#COPY data/logrotate.d/* /etc/logrotate.d/
#COPY data/supervisord/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
#RUN chown -R www-data:www-data /var/tmp/ampache.cfg.php.dist /var/www/config \
# && chmod +x /usr/local/bin/*.sh
#ENTRYPOINT ["docker-entrypoint.sh"]
#CMD ["run.sh"]
#ENTRYPOINT ["/bin/bash -c sleep 60m"]

View File

@ -1,11 +1,14 @@
Welcome to ampache-mga9 docker image!
Welcome to Rx3/Ampache-Mga9 docker image!
This is project aims to build a Ampache + Mageia 9 docker image.
Features:
- ...
- Based on rx3/php-apache-mga9:1.3.3 & rx3/mariadb-mga9:1.0.2 images,
- Support mysql & external pwauth authentication.
Enjoy it!

View File

@ -1,5 +1,71 @@
------------------------------------------------------------------------------------------------------------------------------------
PHP-Apache-Mga9 V 1.0.0 - A. GIBERT - 2024/08/25
Rx3/Ampache-Mga9 V 1.2.3 - A. GIBERT - 2024/10/xx
------------------------------------------------------------------------------------------------------------------------------------
- Fix crontab: user ampache user instead of root and add it to git,
- Fix database restart in compose file,
- Add database healthcheck & webapp service depencies.
------------------------------------------------------------------------------------------------------------------------------------
Rx3/Ampache-Mga9 V 1.2.2 - A. GIBERT - 2024/10/06
------------------------------------------------------------------------------------------------------------------------------------
- Now use rx3/php-apache-mga9:1.3.3 image:
- PHP memory limit increased from 128M to 512M,
- mpm support,
- pwauth support,
- Remove now unneeded pwauth install & PHP config.
- Now use rx3/mariadb-mga9:1.0.2
- Variabilization of external server ports in env & compose file,
- Now use docker_tools for .env building,
- local directory normalization,
- fix ampache.cfg.php.dist initialization.
------------------------------------------------------------------------------------------------------------------------------------
Rx3/Ampache-Mga9 V 1.2.1 - A. GIBERT - 2024/08/28
------------------------------------------------------------------------------------------------------------------------------------
- Switch to rx3/php-apache-mga9:1.3.2 image,
- Switch to rx3/mariadb-mga9:1.0.1 image,
- Fix /usr/bin/pwauth group & mode,
- Fix Ampache Repository/Model/User.php: remove email lookup for new user.
------------------------------------------------------------------------------------------------------------------------------------
Rx3/Ampache-Mga9 V 1.2.0 - A. GIBERT - 2024/08/27
------------------------------------------------------------------------------------------------------------------------------------
- Switch to rx3/mariadb-mga9:1.0.0 image,
- Now full Rx3 based!
------------------------------------------------------------------------------------------------------------------------------------
Rx3/Ampache-Mga9 V 1.1.1 - A. GIBERT - 2024/08/27
------------------------------------------------------------------------------------------------------------------------------------
- Switch to rx3/php-apache-mga9:1.3.1 image,
- Minor compose file update.
------------------------------------------------------------------------------------------------------------------------------------
Rx3/Ampache-Mga9 V 1.1.0 - A. GIBERT - 2024/08/27
------------------------------------------------------------------------------------------------------------------------------------
- Switch to rx3/php-apache-mga9:1.3.0 image,
- Configure php.ini,
- Update compose & Dockerfile.
------------------------------------------------------------------------------------------------------------------------------------
Rx3/Ampache-Mga9 V 1.0.0 - A. GIBERT - 2024/08/25
------------------------------------------------------------------------------------------------------------------------------------
- Initial release,

View File

@ -1,97 +1,120 @@
# Rx3 Ampache Mageia-9 Docker Image
#-------------------------------------------------------------------------------
name: ${IMG_NAME}
name: ${APPL_NAME}
services:
database:
container_name: ${IMG_NAME}-mysql
container_name: ${DATABASE_CONT_NAME}
image: mariadb:11.4.3-ubi9
image: ${DATABASE_IMG}
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: mysqladmin
MARIADB_DATABASE: ampache
MARIADB_USER: ampache
MARIADB_PASSWORD: ampacheadmin
MARIADB_ROOT_HOST: '%' # needs to be enclosed with quotes
MARIADB_UID: ${MARIADB_UID}
MARIADB_GID: ${MARIADB_GID}
MARIADB_ROOT_HOST: ${MARIADB_ROOT_HOST}
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
MARIADB_DATABASE: ${MARIADB_DATABASE}
MARIADB_USER: ${MARIADB_USER}
MARIADB_PASSWORD: ${MARIADB_PASSWORD}
healthcheck:
test: ["CMD", 'mysqladmin', 'ping', '-h', 'localhost', '-u', 'root', '-p${MARIADB_ROOT_PASSWORD}' ]
interval: 10s
timeout: 3s
retries: 3
user: "983:981"
volumes:
- ./mysql:/var/lib/mysql
- ./var/lib/mysql:/var/lib/mysql
networks:
- ampache
- appl
ports:
- "127.0.0.1:${DATABASE_SV_PORT}:9001"
- "127.0.0.1:${DATABASE_PORT}:3306"
webapp-internal:
container_name: ${IMG_NAME}-internal
container_name: ${WEBAPP_INT_CONT_NAME}
image: docker.xor.rx3:5000/rx3/${IMG_NAME}:${IMG_VERSION}
image: ${WEBAPP_IMG}
build:
context: .
args:
- IMG_NAME=${IMG_NAME}
- IMG_FULL_NAME=${IMG_FULL_NAME}
- IMG_VERSION=${IMG_VERSION}
- IMG_MAINTAINER=${IMG_MAINTAINER}
- IMG_NAME=${APPL_NAME}
- IMG_FULL_NAME=${APPL_FULL_NAME}
- IMG_VERSION=${APPL_VERSION}
- IMG_MAINTAINER=${APPL_MAINTAINER}
- IMG_URL_PREFIX=${APPL_URL_PREFIX}
restart: unless-stopped
depends_on:
database:
condition: service_healthy
environment:
- APACHE_UID=980
- APACHE_GID=977
- APACHE_DOC_ROOT=/var/www/public
- DISABLE_INOTIFYWAIT_CLEAN=1
APACHE_UID: ${APACHE_UID}
APACHE_GID: ${APACHE_GID}
APACHE_DOC_ROOT: ${APACHE_DOC_ROOT}
volumes:
- ./ampache-internal/config:/var/www/config
- ./ampache-internal/log:/var/log/ampache
- ./etc/ampache-internal:/var/www/config
- ./var/log/ampache-internal:/var/log/ampache
- ./etc/cron.d/ampache:/etc/cron.d/ampache:ro
- /etc/passwd:/etc/passwd:ro
- /etc/group:/etc/group:ro
- /etc/shadow:/etc/shadow:ro
- ./media/music:/media/music
- ./media/video:/media/video
- /etc/shadow:/etc/shadow:ro
- ${MUSIC_REPO}:/media/music
- ${VIDEO_REPO}:/media/video
networks:
- ampache
- appl
ports:
- "127.0.0.1:8085:80"
- "127.0.0.1:${WEBAPP_INT_SV_PORT}:9001"
- "127.0.0.1:${WEBAPP_INT_PORT}:80"
webapp-external:
container_name: ${IMG_NAME}-external
container_name: ${WEBAPP_EXT_CONT_NAME}
image: docker.xor.rx3:5000/rx3/${IMG_NAME}:${IMG_VERSION}
image: ${WEBAPP_IMG}
restart: unless-stopped
depends_on:
database:
condition: service_healthy
environment:
- APACHE_UID=980
- APACHE_GID=977
- APACHE_DOC_ROOT=/var/www/public
- DISABLE_INOTIFYWAIT_CLEAN=1
APACHE_UID: ${APACHE_UID}
APACHE_GID: ${APACHE_GID}
APACHE_DOC_ROOT: ${APACHE_DOC_ROOT}
volumes:
- ./ampache-external/config:/var/www/config
- ./ampache-external/log:/var/log/ampache
- ./etc/ampache-external:/var/www/config
- ./var/log/ampache-external:/var/log/ampache
- /etc/passwd:/etc/passwd:ro
- /etc/group:/etc/group:ro
- ./media/music:/media/music
- ./media/video:/media/video
- ${MUSIC_REPO}:/media/music
- ${VIDEO_REPO}:/media/video
networks:
- ampache
- appl
ports:
- "127.0.0.1:8086:80"
- "127.0.0.1:${WEBAPP_EXT_SV_PORT}:9001"
- "127.0.0.1:${WEBAPP_EXT_PORT}:80"
networks:
ampache:
name: ampache
appl:
name: ${NETWORK_NAME}
driver: bridge
driver_opts:
com.docker.network.bridge.name: br-ampache
com.docker.network.bridge.name: ${NETWORK_IF_NAME}
ipam:
config:
- subnet: 10.2.33.0/24

97
env.dist Normal file
View File

@ -0,0 +1,97 @@
# Rx3 Ampache Mageia-9 Docker Image
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Global Settings
#-------------------------------------------------------------------------------
APPL_ORG="rx3"
APPL_REGISTRY="docker.xor.rx3:5000"
APPL_URL_PREFIX="${APPL_REGISTRY}/${APPL_ORG}"
#-------------------------------------------------------------------------------
# Image Settings
#-------------------------------------------------------------------------------
APPL_NAME="ampache-mga9"
APPL_FULL_NAME="Rx3 Ampache Mageia-9 Docker Image"
APPL_SHORT_NAME="ampache"
APPL_VERSION="1.2.2"
APPL_URL="${APPL_URL_PREFIX}/${APPL_NAME}:${APPL_VERSION}"
APPL_MAINTAINER='"Arnaud G. GIBERT" <arnaud@rx3.net>'
#-------------------------------------------------------------------------------
# User Settings
#-------------------------------------------------------------------------------
#APPL_ENV="prd"
#APPL_ENV="tst"
#APPL_ENV="int"
APPL_ENV="dvp"
MUSIC_REPO="./opt/music"
VIDEO_REPO="./opt/video"
#-------------------------------------------------------------------------------
# Common
#-------------------------------------------------------------------------------
if [[ "${APPL_ENV}" != "prd" ]]
then
APPL_SUFFIX="-${APPL_ENV}"
ENV_PORT_OFFSET=100
else
APPL_SUFFIX=""
ENV_PORT_OFFSET=0
fi
CONT_NAME_PREFIX=${APPL_NAME/-mga9}${APPL_SUFFIX}
SV_PORT_OFFSET=1000
NETWORK_NAME=${CONT_NAME_PREFIX}
NETWORK_IF_NAME=br-${APPL_SHORT_NAME}-${APPL_ENV}
#-------------------------------------------------------------------------------
# Database
#-------------------------------------------------------------------------------
DATABASE_IMG=${APPL_URL_PREFIX}/mariadb-mga9:1.0.2
DATABASE_CONT_NAME="${CONT_NAME_PREFIX}-database"
DATABASE_PORT=$(( 8006 + ${ENV_PORT_OFFSET}))
DATABASE_SV_PORT=$(( ${DATABASE_PORT} + ${SV_PORT_OFFSET}))
MARIADB_UID=983
MARIADB_GID=981
MARIADB_ROOT_HOST='%' # needs to be enclosed with quotes
MARIADB_ROOT_PASSWORD="mysqladmin"
MARIADB_DATABASE="ampache"
MARIADB_USER="ampache"
MARIADB_PASSWORD="ampacheadmin"
#-------------------------------------------------------------------------------
# WebApp
#-------------------------------------------------------------------------------
WEBAPP_IMG=${APPL_URL}
WEBAPP_INT_CONT_NAME="${CONT_NAME_PREFIX}-webapp-internal"
WEBAPP_INT_PORT=$(( 8085 + ${ENV_PORT_OFFSET}))
WEBAPP_INT_SV_PORT=$(( ${WEBAPP_INT_PORT} + ${SV_PORT_OFFSET}))
WEBAPP_EXT_CONT_NAME="${CONT_NAME_PREFIX}-webapp-external"
WEBAPP_EXT_PORT=$(( ${WEBAPP_INT_PORT} + 1))
WEBAPP_EXT_SV_PORT=$(( ${WEBAPP_EXT_PORT} + ${SV_PORT_OFFSET}))
APACHE_UID=980
APACHE_GID=977
APACHE_DOC_ROOT=/var/www/public

4
etc/ampache-external/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

4
etc/ampache-internal/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

5
etc/cron.d/ampache Normal file
View File

@ -0,0 +1,5 @@
# /etc/cron.d/ampache: crontab fragment for ampache server
PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
15 3 * * * apache cd /var/www; php bin/cli run:updateCatalog -v -c -e -a -g >/var/log/ampache/catalog_update.log 2>&1

4
opt/music/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

4
opt/video/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

4
var/lib/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

4
var/log/ampache-external/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

4
var/log/ampache-internal/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore