Dockerfile 6.21 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM debian:trixie
ARG MOODLE_DATABASE_ROOT_PASSWORD
ARG MOODLE_DATABASE_NAME
ARG MOODLE_DATABASE_USER
ARG MOODLE_DATABASE_PASSWORD
ARG MOODLE_DATABASE_HOST
ARG MOODLE_BASE_DIR
ARG MOODLE_BASE_DIR_DATA

ENV MOODLE_DATABASE_ROOT_PASSWORD ${MOODLE_DATABASE_ROOT_PASSWORD}
ENV MOODLE_DATABASE_NAME ${MOODLE_DATABASE_NAME}
ENV MOODLE_DATABASE_USER ${MOODLE_DATABASE_USER}
ENV MOODLE_DATABASE_PASSWORD ${MOODLE_DATABASE_PASSWORD}
ENV MOODLE_DATABASE_HOST ${MOODLE_DATABASE_HOST}
ENV MOODLE_BASE_DIR ${MOODLE_BASE_DIR}
ENV MOODLE_BASE_DIR_DATA ${MOODLE_BASE_DIR_DATA}

# Installing necessary packages
RUN apt-get update && apt-get upgrade -y && \
20
    apt-get install -y apache2 php libapache2-mod-php php-mysqli php-mysql php-xml php-pdo php-pdo-mysql mariadb-client mariadb-server wget unzip p7zip-full python3 python3-pip iputils-ping php-mbstring graphviz aspell ghostscript clamav php8.2-pspell php8.2-curl php8.2-gd php8.2-intl php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-ldap php8.2-zip php8.2-soap php8.2-mbstring openssl git nano supervisor && \
21
22
23
    apt-get clean && rm -rf /var/lib/apt/lists/*

# Setting necessary php params
24
25
26
#RUN echo "mysql.default_socket=/run/mysqld/mysqld.sock" >> /etc/php/8.2/cli/php.ini
RUN echo "mysql.default_socket=/run/mysqld/mysqld.sock" >> /etc/php/8.2/apache2/php.ini
RUN echo "max_input_vars = 5000" >> /etc/php/8.2/apache2/php.ini
27
28
29
RUN echo "max_input_vars = 5000" >> /etc/php/8.2/cli/php.ini

# Starting Apache server
30
RUN chmod 1777 /tmp
31

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Add necessary packages for adding Python 3 repository and installing curl
RUN apt-get update && apt-get install -y curl software-properties-common gnupg2 dirmngr --no-install-recommends

# Add the repository
RUN add-apt-repository 'deb https://deb.debian.org/debian/dists/trixie/ trixie main'

# Update package lists after adding the repository
RUN apt-get update

# Installing necessary Python dependencies & Flask
RUN apt-get install -y python3-venv python3-pip python3-matplotlib
RUN python3 -m venv /opt/myenv
RUN /opt/myenv/bin/python3 -m pip install --upgrade pip
#RUN /opt/myenv/bin/python3 -m pip install matplotlib Flask torch sklearn-learn
COPY requirements.txt /opt/myenv/
47
48
COPY sentence-transformers-paraphrase-multilingual-MiniLM-L12-v2 /var/www/html/moodle/sentence-transformers-paraphrase-multilingual-MiniLM-L12-v2
WORKDIR /var/www/html/moodle
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
RUN /opt/myenv/bin/python3 -m pip install -r /opt/myenv/requirements.txt
RUN /opt/myenv/bin/python3 -m pip install --upgrade setuptools wheel

# Copy the api.py script into the container
COPY api.py /var/www/html/moodle/api.py
COPY install_moodle.sh /var/www/html/moodle/install_moodle.sh
RUN chmod +x /var/www/html/moodle/install_moodle.sh

RUN mkdir -p /asyst
# Download and extract the ASYST archive
#RUN curl -o asyst.zip -L https://transfer.hft-stuttgart.de/gitlab/ulrike.pado/ASYST/-/archive/main/ASYST-main.zip && \
#    7z x asyst.zip -o/asyst && \
#    mv /asyst/ASYST-main/* /asyst && \
#    rm -rf /asyst/ASYST-main asyst.zip

# Set permissions (if necessary)
RUN chown -R www-data:www-data /asyst
RUN chmod -R 755 /asyst

COPY ./asyst /var/www/html/moodle/asyst
RUN ln -s /var/www/html/moodle/asyst/Source/Skript /var/www/html/moodle/Skript

# Installing Moodle Setting correct acces rules
72
RUN mkdir -p ${MOODLE_BASE_DIR} && \
73
    wget -qO-  https://packaging.moodle.org/stable403/moodle-4.3.4.tgz | tar xz -C ${MOODLE_BASE_DIR} --strip-components=1
74
75

RUN chown -R www-data:www-data ${MOODLE_BASE_DIR} && \
76
77
    find ${MOODLE_BASE_DIR} -type d -exec chmod 755 {} \; && \
    find ${MOODLE_BASE_DIR} -type f -exec chmod 644 {} \; && \
78
79
80
81
82
    mkdir -p ${MOODLE_BASE_DIR_DATA} && \
    chown -R www-data:www-data ${MOODLE_BASE_DIR_DATA} && \
    chmod -R 755 ${MOODLE_BASE_DIR_DATA}

# Copying of beeing developed Plugin
83
COPY yourplugin ${MOODLE_BASE_DIR}/mod/yourplugin
84
85

# Setting correct acces rules for Plugin
86
87
#RUN chown -R www-data:www-data ${MOODLE_BASE_DIR}/mod/yourplugin && \
RUN chmod -R 755 ${MOODLE_BASE_DIR}/mod/yourplugin
88
89
90
91

# Making Symlink for MariaDB Socket
RUN ln -s /run/mysqld/mysqld.sock /tmp/mysql.sock

92
RUN echo "ServerName modhost" >> /etc/apache2/apache2.conf
93

94
95
96
97
# Apache Settings for HTTP
RUN echo  \
    "<VirtualHost *:80>\n" \
        "ServerName www.moodle.loc\n" \
98
99
100
101
102
103
104
        "ServerAlias www.moodle.loc\n" \
        "DocumentRoot /var/www/html/moodle\n" \
        "<Directory /var/www/html/moodle>\n" \
        "  Options +FollowSymlinks\n" \
        "  AllowOverride All\n" \
        "  Require all granted\n" \
        "</Directory>\n" \
105
106
107
108
109
110
    "</VirtualHost>\n" \
        "ErrorLog /var/log/apache2/error.log\n" \
        "CustomLog /var/log/apache2/access.log combined\n" \
#        "RewriteEngine On\n" \
#        "RewriteCond %{HTTPS} !=on\n" \
#        "RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]\n" \
111
112
113
114
115
    > /etc/apache2/sites-enabled/000-default.conf

# Setting Apache
RUN a2enmod rewrite

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Generate a self-signed SSL certificate (replace example.com with your domain)
RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/ssl/private/apache-selfsigned.key \
    -out /etc/ssl/certs/apache-selfsigned.crt \
    -subj "/C=EU/ST=Berlin/L=Berlin/O=HFT/CN=www.moodle.loc"

# Configure SSL virtual host
RUN echo  \
    "<VirtualHost *:443>\n" \
        "ServerName www.moodle.loc\n" \
        "ServerAlias www.moodle.loc\n" \
        "DocumentRoot /var/www/html/moodle\n" \
        "<Directory /var/www/html/moodle>\n" \
        "  Options +FollowSymlinks\n" \
        "  AllowOverride All\n" \
        "  Require all granted\n" \
        "</Directory>\n" \
        "SSLEngine on\n" \
        "SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt\n" \
        "SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key\n" \
        "ErrorLog /var/log/apache2/error.log\n" \
        "CustomLog /var/log/apache2/access.log combined\n" \
    "</VirtualHost>\n" \
    > /etc/apache2/sites-enabled/default-ssl.conf

# Opening 000-default.conf for edit
RUN sed -i '/<\/VirtualHost>/i \
RewriteEngine On \n\
RewriteCond %{SERVER_PORT} 80 \n\
RewriteRule ^(.*)$ https://www.moodle.loc/$1 [R,L] \n\
' /etc/apache2/sites-enabled/000-default.conf

# Enable SSL module in Apache
RUN a2enmod ssl
150
151

#Opening ports
152
EXPOSE 80 443 5000
153

154
155
156
157
158
# Setting up supervisord
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

# Running supervisord
CMD ["/usr/bin/supervisord"]