UPD: so many improvements :)

This commit is contained in:
2019-04-13 15:34:59 +02:00
parent aa1a4dbc72
commit d219a6101f
18 changed files with 111 additions and 39 deletions

View File

@@ -1,16 +1,20 @@
FROM fedora FROM fedora
RUN dnf -y update && \ RUN dnf -y update && \
dnf -y install procps-ng && \
dnf -y install httpd && \ dnf -y install httpd && \
dnf -y install python3-mod_wsgi && \ dnf -y install python3-mod_wsgi && \
dnf clean all dnf clean all
COPY container-files/ / COPY container-files/httpd-layer/ /
COPY django-test /usr/local/share/django-test COPY django-test /srv/src/django-test
RUN /usr/local/bin/install-django-test.sh /usr/local/share/django-test COPY container-files/django-test-layer/ /
RUN /srv/bin/setup-django-test.sh /srv/django-test /srv/src/django-test
EXPOSE 80 COPY container-files/docker-entrypoint.sh /
ENTRYPOINT ["/usr/local/sbin/start-httpd.sh"] EXPOSE 80/tcp
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["--"] CMD ["--"]

View File

@@ -14,5 +14,4 @@ image:
$(DOCKER) build -t $(IMAGE_NAME) . $(DOCKER) build -t $(IMAGE_NAME) .
test-run: test-run:
$(DOCKER) run -ti -p 80:80 --name $(APPLICATION_NAME) $(IMAGE_NAME) $(DOCKER) run -ti --rm -p 80:80 $(IMAGE_NAME)
$(DOCKER) rm $(APPLICATION_NAME)

3
README
View File

@@ -1,3 +0,0 @@
git clone https://heinzelwelt.de/vcs/python/django-test
make image
make test-run

48
README.rst Normal file
View File

@@ -0,0 +1,48 @@
ABOUT
=====
Docker container for django-test.
DESCRIPTION
===========
The docker image is derivated from
Fedora image (https://hub.docker.com/_/fedora).
It will contain and run
- apache httpd
- python3 mod_wsgi
- django-test django application
BUILD
=====
- ``git clone https://heinzelwelt.de/vcs/python/django-test``
- ``docker build -t IMAGE_NAME .``
USAGE
=====
- ``docker run -d -p 80:80 -e LOG_LEVEL=error IMAGE_NAME``
The httpd process is listening on port 80/tcp.
The httpd error log will be written to stderr, so it can be
obtained with ``docker logs``
CONFIGURATION
=============
The following **environment variables** are supported:
- LOG_LEVEL
-- to set the httpd LogLevel directive
- SERVER_ADMIN
-- to set the httpd ServerAdmin directive
LICENCE
=======
Permission to use, copy, modify, and/or distribute this software
for any purpose with or without fee is hereby granted.

View File

@@ -0,0 +1,18 @@
WSGIDaemonProcess django-test display-name=django-test python-home=/srv/django-test/python python-path=/srv/django-test/django
Alias /static/ "/srv/django-test/django/var/www/static/"
<Directory "/srv/django-test/django/var/www/static">
AllowOverride None
Require all granted
</Directory>
WSGIScriptAlias / "/srv/django-test/django/main/wsgi.py"
<Directory "/srv/django-test/django/main">
WSGIProcessGroup django-test
WSGIPassAuthorization On
AllowOverride None
Options FollowSymLinks
<Files wsgi.py>
Require all granted
</Files>
</Directory>

View File

@@ -2,17 +2,29 @@
### config ### ### config ###
PROJECT_NAME="django-test" PROJECT_NAME="django-test"
PROJECT_REPO="git+https://heinzelwelt.de/vcs/python/django-test" SETUP_COMMAND="django-test-admin"
INSTALL_DIR="/var/www/wsgi/${PROJECT_NAME}" INSTALL_DIR="/srv/${PROJECT_NAME}"
VENV_DIR="python" VENV_DIR="python"
VENV_PATH="${INSTALL_DIR}/${VENV_DIR}" VENV_PATH="${INSTALL_DIR}/${VENV_DIR}"
DJANGO_DIR="django" DJANGO_DIR="django"
DJANGO_PATH="${INSTALL_DIR}/${DJANGO_DIR}" DJANGO_PATH="${INSTALL_DIR}/${DJANGO_DIR}"
DJANGO_MAIN_MODULE="main"
PROJECT_REPO="git+https://heinzelwelt.de/vcs/python/django-test"
### argv ### ### argv ###
if test "$1" != "" -a -d "$1" ; then if test "$1" != "" ; then
if test "$1" != "-" ; then
INSTALL_DIR="$1"
fi
shift
fi
if test "$1" != "" ; then
if test "$1" != "-" ; then
PROJECT_REPO="$1" PROJECT_REPO="$1"
fi
shift
fi fi
### action ### ### action ###
@@ -21,13 +33,13 @@ python3 -m venv "${VENV_PATH}"
source "${VENV_PATH}/bin/activate" source "${VENV_PATH}/bin/activate"
pip install --upgrade pip pip install --upgrade pip
pip install "$PROJECT_REPO" pip install "$PROJECT_REPO"
django-test-admin setup "${DJANGO_PATH}" $SETUP_COMMAND setup "${DJANGO_PATH}"
python3 "${DJANGO_PATH}/manage.py" collectstatic --noinput python3 "${DJANGO_PATH}/manage.py" collectstatic --noinput
cat <<E-O-H >> "${DJANGO_PATH}/main/settings.py" cat <<E-O-H >> "${DJANGO_PATH}/${DJANGO_MAIN_MODULE}/settings.py"
ALLOWED_HOSTS = ['*'] ALLOWED_HOSTS = ['*']
DEBUG = True DEBUG = False
E-O-H E-O-H
### end ### ### end ###

View File

@@ -0,0 +1,16 @@
#!/bin/sh
# Disable CustomLog, that is configured by default in upstream.
sed -i -e 's:^\(\s*\)\(CustomLog\s\s*"logs/access_log"\):\1# Disabled by /docker-entrypoint.sh # \2:' \
/etc/httpd/conf/httpd.conf
# Remove left-overs from an incomplete shutdown previously.
rm -rf /run/httpd/* /tmp/httpd*
if test "X${SERVER_ADMIN}" != "X" ; then
set -- -c "ServerAdmin $SERVER_ADMIN" "$@"
fi
if test "X${LOG_LEVEL}" != "X" ; then
set -- -c "LogLevel $LOG_LEVEL" "$@"
fi
exec /usr/sbin/httpd -DFOREGROUND "$@"

View File

@@ -1,18 +0,0 @@
WSGIDaemonProcess django-test processes=1 threads=4 display-name=django-test python-home=/var/www/wsgi/django-test/python python-path=/var/www/wsgi/django-test/django
Alias /static/ "/var/www/wsgi/django-test/django/var/www/static/"
<Directory "/var/www/wsgi/django-test/django/var/www/static">
AllowOverride None
Require all granted
</Directory>
WSGIScriptAlias / "/var/www/wsgi/django-test/django/main/wsgi.py"
<Directory "/var/www/wsgi/django-test/django/main">
WSGIProcessGroup django-test
WSGIPassAuthorization On
AllowOverride None
Options FollowSymLinks
<Files wsgi.py>
Require all granted
</Files>
</Directory>

View File

@@ -1,6 +1,4 @@
# /etc/httpd/conf.d/defaults.conf # /etc/httpd/conf.d/defaults.conf
ServerAdmin heinzel@heinzelwelt.de
ServerTokens Prod ServerTokens Prod
ErrorLog /dev/stderr ErrorLog /dev/stderr
LogLevel info

View File

@@ -1,2 +0,0 @@
#!/bin/sh
exec /usr/sbin/httpd -DFOREGROUND $@