Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker-friendly configuration #1085

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
src/vendor/
node_modules/
node_modules/
src/MyRadio_Config.local.php
31 changes: 7 additions & 24 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,35 +1,17 @@
FROM php:7.4-apache

RUN apt-get update && apt-get install -y libpq-dev libpng-dev libjpeg-dev libldap-dev unzip \
libcurl4-openssl-dev libxslt-dev git libz-dev libzip-dev libmemcached-dev \
postgresql-client jq msmtp-mta
libcurl4-openssl-dev libxslt-dev git libz-dev libzip-dev libmemcached-dev \
postgresql-client jq msmtp-mta

RUN docker-php-ext-install pgsql pdo_pgsql gd ldap curl xsl zip

RUN pecl install memcached && \
echo extension=memcached.so >> /usr/local/etc/php/conf.d/memcached.ini

RUN pecl install xdebug-3.1.1 && docker-php-ext-enable xdebug \
&& echo 'zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so"' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo 'xdebug.client_port=9003' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo 'xdebug.mode=develop,debug' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo 'xdebug.start_with_request=yes' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo 'xdebug.client_host=localhost' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN a2enmod rewrite

RUN echo 'error_reporting=E_ALL' >> /usr/local/etc/php/conf.d/error-reporting.ini

RUN echo sendmail_path = "/usr/bin/msmtp -t --host mail --port 1025 --from [email protected]" > /usr/local/etc/php/conf.d/sendmail.ini

# Self-signed certificate
RUN openssl req -nodes -new -subj "/C=GB/ST=North Yorkshire/L=York/O=University Radio York/OU=Localhost/CN=localhost" > myradio.csr && \
openssl rsa -in privkey.pem -out myradio.key && \
openssl x509 -in myradio.csr -out myradio.crt -req -signkey myradio.key -days 999 && \
cp myradio.crt /etc/apache2/myradio.crt && \
cp myradio.key /etc/apache2/myradio.key

RUN a2enmod rewrite ssl

COPY sample_configs/apache.conf /etc/apache2/sites-available/myradio.conf
COPY sample_configs/docker-apache.conf /etc/apache2/sites-available/myradio.conf
RUN a2dissite 000-default && a2ensite myradio && \
service apache2 restart && apachectl -S

Expand All @@ -45,7 +27,8 @@ RUN COMPOSER_VENDOR_DIR=/var/www/myradio/src/vendor composer install
COPY schema schema
COPY src src

COPY sample_configs/docker-config.php src/MyRadio_Config.local.php
RUN chown www-data:www-data /var/www/myradio/src/MyRadio_Config.local.php && chmod 664 /var/www/myradio/src/MyRadio_Config.local.php
COPY src/MyRadio_Config.docker.php /etc/myradio/MyRadio_Config.local.php
RUN chown www-data:www-data /etc/myradio/MyRadio_Config.local.php
ENV MYRADIO_CONFIG_PATH=/etc/myradio/MyRadio_Config.local.php

CMD ["apache2-foreground"]
50 changes: 50 additions & 0 deletions Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
FROM php:7.4-apache

RUN apt-get update && apt-get install -y libpq-dev libpng-dev libjpeg-dev libldap-dev unzip \
libcurl4-openssl-dev libxslt-dev git libz-dev libzip-dev libmemcached-dev \
postgresql-client jq msmtp-mta

RUN docker-php-ext-install pgsql pdo_pgsql gd ldap curl xsl zip

RUN pecl install memcached && \
echo extension=memcached.so >> /usr/local/etc/php/conf.d/memcached.ini

RUN pecl install xdebug-3.1.1 && docker-php-ext-enable xdebug \
&& echo 'xdebug.client_port=9003' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo 'xdebug.mode=develop,debug' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo 'xdebug.client_host=host.docker.internal' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

RUN echo 'error_reporting=E_ALL' >> /usr/local/etc/php/conf.d/error-reporting.ini

RUN echo sendmail_path = "/usr/bin/msmtp -t --host mail --port 1025 --from [email protected]" > /usr/local/etc/php/conf.d/sendmail.ini

# Self-signed certificate
RUN openssl req -nodes -new -subj "/C=GB/ST=North Yorkshire/L=York/O=University Radio York/OU=Localhost/CN=localhost" > myradio.csr && \
openssl rsa -in privkey.pem -out myradio.key && \
openssl x509 -in myradio.csr -out myradio.crt -req -signkey myradio.key -days 999 && \
cp myradio.crt /etc/apache2/myradio.crt && \
cp myradio.key /etc/apache2/myradio.key

RUN a2enmod rewrite ssl

COPY sample_configs/apache.conf /etc/apache2/sites-available/myradio.conf
RUN a2dissite 000-default && a2ensite myradio && \
service apache2 restart && apachectl -S

COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

RUN mkdir -p /var/www/myradio && chown -R www-data:www-data /var/www/myradio && \
mkdir -p /var/log/myradio && chown -R www-data:www-data /var/log/myradio

WORKDIR /var/www/myradio
COPY composer.* /var/www/myradio/
RUN COMPOSER_VENDOR_DIR=/var/www/myradio/src/vendor composer install

COPY schema schema
COPY src src

COPY src/MyRadio_Config.docker.php /etc/myradio/MyRadio_Config.local.php
RUN chown www-data:www-data /etc/myradio/MyRadio_Config.local.php
ENV MYRADIO_CONFIG_PATH=/etc/myradio/MyRadio_Config.local.php

CMD ["apache2-foreground"]
35 changes: 21 additions & 14 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ services:
POSTGRES_PASSWORD: myradio
volumes:
- db-data:/var/lib/postgresql/data
ports:
- 55432:5432

memcached:
image: memcached:alpine
Expand All @@ -17,8 +19,10 @@ services:
ports:
- 8025:8025

myradio:
build: .
myradio: &myradio
build:
context: .
dockerfile: Dockerfile.dev
depends_on:
- postgres
- memcached
Expand All @@ -28,17 +32,20 @@ services:
volumes:
- ./schema:/var/www/myradio/schema
- ./src:/var/www/myradio/src:rw
# daemon:
# build: .
# depends_on:
# - postgres
# - memcached
# ports:
# - 7080:80
# - 4443:443
# volumes:
# - ./schema:/var/www/schema
# - ./src:/var/www/myradio
# command: ['/usr/local/bin/php', '/var/www/myradio/src/Controllers/daemon.php']
environment:
MYRADIO_DB_HOSTNAME: postgres
MYRADIO_DB_NAME: myradio
MYRADIO_DB_USER: myradio
MYRADIO_DB_PASS: myradio
MYRADIO_SHORT_NAME: URD
MYRADIO_LONG_NAME: 'University Radio Docker'
MYRADIO_BASE_URL: 'http://localhost:7080/myradio/'
MYRADIO_CACHE_ENABLE: 'true'
MYRADIO_CACHE_MEMCACHED_SERVERS: '[["memcached", 11211]]'
MYRADIO_SETUP: "false"
daemon:
<<: *myradio
ports: []
command: ['/usr/local/bin/php', '/var/www/myradio/src/Controllers/daemon.php']
volumes:
db-data:
27 changes: 27 additions & 0 deletions sample_configs/docker-apache.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<VirtualHost *:80>
DocumentRoot /var/www
Alias /api /var/www/myradio/src/PublicAPI
<Directory /var/www/myradio/src/PublicAPI>
Require all granted
AllowOverride None
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /api/index.php [QSA,L]
</Directory>

Alias /myradio /var/www/myradio/src/Public
<Directory /var/www/myradio/src/Public>
Require all granted
AllowOverride None
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/? /myradio/index.php?module=$1&action=$2 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/? /myradio/index.php?module=$1 [QSA,L]
</Directory>
</VirtualHost>
19 changes: 0 additions & 19 deletions sample_configs/docker-config.php

This file was deleted.

Loading