diff options
-rw-r--r-- | OS/run.sh | 1 | ||||
-rw-r--r-- | OS/sx-lib.sh | 15 | ||||
-rw-r--r-- | Services/apache/Dockerfile | 7 | ||||
-rw-r--r-- | Services/apache/httpd.conf | 2 | ||||
-rw-r--r-- | Services/apache/run.sh | 50 | ||||
-rw-r--r-- | Services/apache/sx-httpd.sh | 48 | ||||
-rw-r--r-- | Services/php/Dockerfile | 17 | ||||
-rw-r--r-- | Services/php/docker-compose.yml | 15 | ||||
-rw-r--r-- | Services/php/httpd.conf | 15 | ||||
-rw-r--r-- | Services/php/index.php (renamed from Services/php/app/index.php) | 0 | ||||
-rw-r--r-- | Services/php/run.sh | 58 | ||||
-rw-r--r-- | docker-compose.yml | 8 |
12 files changed, 174 insertions, 62 deletions
@@ -1,5 +1,6 @@ #!/bin/bash source /bin/sx-lib.sh +check_environment display_container_header display_container_started
\ No newline at end of file diff --git a/OS/sx-lib.sh b/OS/sx-lib.sh index 22aa84a..fd2f6b5 100644 --- a/OS/sx-lib.sh +++ b/OS/sx-lib.sh @@ -2,6 +2,21 @@ export TERM=dumb +function check_environment { + if [ ! -v CONTAINER_TYPE ]; then + echo "ERROR : environment var CONTAINER_TYPE is missing. EXIT !!!" + exit 1; + fi + if [ ! -v CONTAINER_INSTANCE ]; then + echo "ERROR : environment var CONTAINER_INSTANCE is missing. EXIT !!!" + exit 1; + fi + if [ ! -v CONTAINER_SERVICE ]; then + echo "ERROR : environment var CONTAINER_SERVICE is missing. EXIT !!!" + exit 1; + fi +} + function display_container_header { echo "+=====================================================" echo "| Container : $HOSTNAME" diff --git a/Services/apache/Dockerfile b/Services/apache/Dockerfile index 8db1b4f..72a8ee8 100644 --- a/Services/apache/Dockerfile +++ b/Services/apache/Dockerfile @@ -5,8 +5,8 @@ USER root RUN dnf -y install httpd && \ dnf clean all COPY httpd.conf /etc/httpd/conf.d/app.conf -COPY run.sh /bin/ -RUN chmod 775 /bin/run.sh && \ +COPY *.sh /bin/ +RUN chmod 775 /bin/run.sh /bin/sx-httpd.sh && \ chmod ug+r /etc/httpd/conf.d/app.conf && \ rm -f /etc/httpd/conf.d/autoindex.conf && \ rm -f /etc/httpd/conf.d/welcome.conf && \ @@ -14,7 +14,8 @@ RUN chmod 775 /bin/run.sh && \ mkdir /data/www && \ mkdir /data/logs COPY ./ /data/www -RUN rm -f /data/www/Dockerfile /data/www/httpd.conf /data/www/run.sh +RUN rm -f /data/www/Dockerfile /data/www/httpd.conf /data/www/run.sh /data/www/sx-httpd.sh && \ + chown -R apache:apache /data/www /data/logs EXPOSE 80 EXPOSE 443 diff --git a/Services/apache/httpd.conf b/Services/apache/httpd.conf index ef55e71..f612424 100644 --- a/Services/apache/httpd.conf +++ b/Services/apache/httpd.conf @@ -1,5 +1,5 @@ # -# This file will be copied into /etc/httpd/conf.d/sx.conf and loaded when httpd start +# This file will be copied into /etc/httpd/conf.d/app.conf and loaded when httpd start # ServerAdmin cl@startx.fr ErrorLog "/data/logs/httpd_error.log" diff --git a/Services/apache/run.sh b/Services/apache/run.sh index 7e2fb8e..8cb8010 100644 --- a/Services/apache/run.sh +++ b/Services/apache/run.sh @@ -1,55 +1,15 @@ #!/bin/bash -source /bin/sx-lib.sh export HTTPDCONF=/etc/httpd/conf.d/app.conf -# Begin configuration before starting daemonized process -# and start generating host keys -function begin_config { - echo "=> BEGIN APACHE CONFIGURATION" - mkdir -p /var/run/httpd - if [ -v DOCROOT ]; then - echo "=> Changing document root to $DOCROOT" - ${DOCROOT=/data/www} - echo "DocumentRoot \"$DOCROOT\"" >> $HTTPDCONF - fi -} - -# End configuration process just before starting daemon -function end_config { - stop_server - echo "=> END APACHE CONFIGURATION" -} - -# Start the httpd server in background. Used to perform config -# against the database structure such as user creation -function start_server { - echo "=> Starting httpd server" - /usr/sbin/apachectl & - sleep 2 -} - -# Stop the httpd server running in background. -function stop_server { - echo "=> Stopping httpd server ..." - killall httpd - rm -rf /run/httpd/* - sleep 2 -} - -# Start the httpd server as a deamon and execute it inside -# the running shell -function start_daemon { - echo "=> Starting httpd daemon ..." - exec /usr/sbin/apachectl -D FOREGROUND -} - - +source /bin/sx-lib.sh +source /bin/sx-httpd.sh -if [[ "$0" == *"httpd.sh" && ! $1 = "" ]];then +if [[ "$0" == *"run.sh" && ! $1 = "" ]];then eval "$@"; fi - +check_environment +check_httpd_environment display_container_header begin_config end_config diff --git a/Services/apache/sx-httpd.sh b/Services/apache/sx-httpd.sh new file mode 100644 index 0000000..ad7b995 --- /dev/null +++ b/Services/apache/sx-httpd.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +function check_httpd_environment { + if [ ! -v SERVER_NAME ]; then + export SERVER_NAME=$CONTAINER_NAME + fi +} + +# Begin configuration before starting daemonized process +# and start generating host keys +function begin_config { + echo "=> BEGIN APACHE CONFIGURATION" + mkdir -p /var/run/httpd + if [ -v DOCROOT ]; then + echo "=> Changing document root to $DOCROOT" + ${DOCROOT=/data/www} + echo "DocumentRoot \"$DOCROOT\"" >> $HTTPDCONF + fi +} + +# End configuration process just before starting daemon +function end_config { + stop_server + echo "=> END APACHE CONFIGURATION" +} + +# Start the httpd server in background. Used to perform config +# against the database structure such as user creation +function start_server { + echo "=> Starting httpd server" + /usr/sbin/apachectl & + sleep 2 +} + +# Stop the httpd server running in background. +function stop_server { + echo "=> Stopping httpd server ..." + killall httpd + rm -rf /run/httpd/* + sleep 2 +} + +# Start the httpd server as a deamon and execute it inside +# the running shell +function start_daemon { + echo "=> Starting httpd daemon ..." + exec /usr/sbin/apachectl -D FOREGROUND +} diff --git a/Services/php/Dockerfile b/Services/php/Dockerfile index 60985df..b46f098 100644 --- a/Services/php/Dockerfile +++ b/Services/php/Dockerfile @@ -8,14 +8,17 @@ RUN dnf -y install php php-pecl-mongo php-cli php-pear \ php-bcmath php-pecl-zip php-php-gettext php-tcpdf \ php-tcpdf-dejavu-sans-fonts php-tidy \ && dnf clean all -# Copy application content -COPY app/* /var/www/html/ -COPY httpd.conf /etc/httpd/conf.d/sx.conf +COPY httpd.conf /etc/httpd/conf.d/app.conf COPY php.ini /etc/php.d/sx.ini -RUN chmod ug+r /var/www/html/* \ - && chown -R apache:apache /var/www/html /var/log/httpd +COPY run.sh /bin/ +RUN chmod 775 /bin/run.sh && \ + chmod ug+r /etc/httpd/conf.d/app.conf +COPY ./ /data/www +RUN rm -f /data/www/Dockerfile /data/www/httpd.conf /data/www/run.sh && \ + chown -R apache:apache /data/www /data/logs && \ + chmod ug+r -R /data/www EXPOSE 80 EXPOSE 443 -VOLUME ["/var/www/html", "/var/log/httpd"] -CMD ["/sx/httpd_run.sh"]
\ No newline at end of file +VOLUME ["/data/www","/data/logs"] +CMD ["/bin/run.sh"]
\ No newline at end of file diff --git a/Services/php/docker-compose.yml b/Services/php/docker-compose.yml new file mode 100644 index 0000000..b8130ef --- /dev/null +++ b/Services/php/docker-compose.yml @@ -0,0 +1,15 @@ +apache: + build: ./ +# image: sx-apache + container_name: "sx-apache" + mem_limit: 1g + memswap_limit: 2g + cpu_shares: 2 + restart: "on-failure:2" + environment: + CONTAINER_TYPE: "service" + CONTAINER_SERVICE: "apache" + CONTAINER_INSTANCE: "sx-apache" + volumes: + - "/tmp/container/logs:/data/logs" + - "/tmp/container/www:/data/www"
\ No newline at end of file diff --git a/Services/php/httpd.conf b/Services/php/httpd.conf index 2cb8301..3a51a63 100644 --- a/Services/php/httpd.conf +++ b/Services/php/httpd.conf @@ -1,8 +1,19 @@ # -# This file will be copied into /etc/httpd/conf.d/sx.conf and loaded when httpd start +# This file will be copied into /etc/httpd/conf.d/app.conf and loaded when httpd start # ServerAdmin cl@startx.fr -<Directory "/var/www/html"> +ErrorLog "/data/logs/httpd_error.log" + +<IfModule log_config_module> + CustomLog "/data/logs/httpd_access.log" combined +</IfModule> + +Alias / /data/www +<Directory "/data/www"> + AddDefaultCharset UTF-8 AllowOverride All + Order Allow,Deny + Allow from All + Require all granted DirectoryIndex index.php index.html </Directory> diff --git a/Services/php/app/index.php b/Services/php/index.php index 411b39b..411b39b 100644 --- a/Services/php/app/index.php +++ b/Services/php/index.php diff --git a/Services/php/run.sh b/Services/php/run.sh new file mode 100644 index 0000000..bcddd35 --- /dev/null +++ b/Services/php/run.sh @@ -0,0 +1,58 @@ +#!/bin/bash +source /bin/sx-lib.sh +export HTTPDCONF=/etc/httpd/conf.d/app.conf + +# Begin configuration before starting daemonized process +# and start generating host keys +function begin_config { + echo "=> BEGIN APACHE-PHP CONFIGURATION" + mkdir -p /var/run/httpd + if [ -v DOCROOT ]; then + echo "=> Changing document root to $DOCROOT" + ${DOCROOT=/data/www} + echo "DocumentRoot \"$DOCROOT\"" >> $HTTPDCONF + fi +} + +# End configuration process just before starting daemon +function end_config { + stop_server + echo "=> END APACHE-PHP CONFIGURATION" +} + +# Start the httpd server in background. Used to perform config +# against the database structure such as user creation +function start_server { + echo "=> Starting httpd + php server" + /usr/sbin/apachectl & + sleep 2 +} + +# Stop the httpd server running in background. +function stop_server { + echo "=> Stopping httpd + php server ..." + killall httpd + rm -rf /run/httpd/* + sleep 2 +} + +# Start the httpd server as a deamon and execute it inside +# the running shell +function start_daemon { + echo "=> Starting httpd + php daemon ..." + exec /usr/sbin/apachectl -D FOREGROUND +} + + + +if [[ "$0" == *"run.sh" && ! $1 = "" ]];then + eval "$@"; +fi + +check_environment +check_httpd_environment +display_container_header +begin_config +end_config +start_daemon +display_container_started diff --git a/docker-compose.yml b/docker-compose.yml index e8cf6ff..2bf7971 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,10 @@ apache: build: Services/apache/ container_name: "startx-sv-apache" +php: + build: Services/php/ + container_name: "startx-sv-php" + #mariadb: # build: Services/mariadb/ # container_name: "startx-sv-mariadb" @@ -28,10 +32,6 @@ apache: # build: Services/ooconv/ # container_name: "startx-sv-ooconv" -#php: -# build: Services/php/ -# container_name: "startx-sv-php" - #postgres: # build: Services/postgres/ # container_name: "startx-sv-postgres" |