esoe
4 weeks ago
11 changed files with 246 additions and 8 deletions
@ -0,0 +1,20 @@ |
|||||||
|
$container_name = "moodle" |
||||||
|
$image_name = "moodle" |
||||||
|
$build_name = "moodle" |
||||||
|
$code_location = "C:\Users\devuser\Documents\code\exam\moodle" |
||||||
|
# тома |
||||||
|
$moodle_data = "moodle-data" |
||||||
|
$moodle_html = "moodle-html" |
||||||
|
|
||||||
|
# Остановить и удалить существующий контейнер |
||||||
|
docker stop $container_name |
||||||
|
docker rm $container_name |
||||||
|
|
||||||
|
# Удалить существующий образ |
||||||
|
docker rmi $image_name |
||||||
|
|
||||||
|
# удалить тома |
||||||
|
docker volume rm $moodle_data |
||||||
|
docker volume rm $moodle_html |
||||||
|
|
||||||
|
docker builder prune --force |
@ -0,0 +1,26 @@ |
|||||||
|
version: "3.7" |
||||||
|
services: |
||||||
|
moodle: |
||||||
|
build: |
||||||
|
context: ../moodle |
||||||
|
dockerfile: dockerfile |
||||||
|
tty: true |
||||||
|
image: moodle |
||||||
|
container_name: moodle |
||||||
|
volumes: |
||||||
|
- moodle-data:/var/moodledata |
||||||
|
- moodle-html:/var/www/html |
||||||
|
ports: |
||||||
|
- "90:80" |
||||||
|
- "9443:443" |
||||||
|
restart: unless-stopped |
||||||
|
volumes: |
||||||
|
moodle-data: |
||||||
|
external: true |
||||||
|
moodle-html: |
||||||
|
external: true |
||||||
|
networks: |
||||||
|
default: |
||||||
|
name: exam-net |
||||||
|
external: true |
||||||
|
driver: bridge |
@ -0,0 +1,73 @@ |
|||||||
|
ARG VERSION=latest |
||||||
|
FROM ubuntu:${VERSION} |
||||||
|
|
||||||
|
# Сведения о контейнере |
||||||
|
LABEL author="esoe" |
||||||
|
LABEL description="moodle image for exam" |
||||||
|
LABEL version="1.0" |
||||||
|
|
||||||
|
# VOLUME ["/var/moodledata", "/var/www/html"] |
||||||
|
# EXPOSE 80 443 |
||||||
|
|
||||||
|
# Let the container know that there is no tty |
||||||
|
# ENV DEBIAN_FRONTEND noninteractive |
||||||
|
|
||||||
|
# This should be overridden on running moodle container |
||||||
|
ENV MOODLE_URL http://moodle:80 |
||||||
|
# ENV MOODLE_URL http://192.168.99.100:8080 |
||||||
|
|
||||||
|
COPY ./foreground-apache2.sh /etc/apache2/foreground.sh |
||||||
|
|
||||||
|
# обновление пакетов |
||||||
|
RUN apt-get update -y |
||||||
|
RUN apt-get -u upgrade -y |
||||||
|
|
||||||
|
# установка пакетов, необходимых для развертывания и работы moodle |
||||||
|
RUN apt-get install pwgen -y |
||||||
|
RUN apt-get install curl -y |
||||||
|
RUN apt-get install git -y |
||||||
|
RUN apt-get install unzip -y |
||||||
|
RUN apt-get install vim -y |
||||||
|
RUN apt-get install wget -y |
||||||
|
RUN apt-get install postgresql-client -y |
||||||
|
RUN apt-get install software-properties-common -y |
||||||
|
|
||||||
|
# установка php 8.1 |
||||||
|
RUN add-apt-repository ppa:ondrej/php |
||||||
|
RUN apt-get update |
||||||
|
RUN apt-get install php8.1 -y |
||||||
|
RUN apt-get install libapache2-mod-php8.1 -y |
||||||
|
RUN apt-get install php8.1-fpm php8.1-curl php8.1-gd php8.1-xmlrpc php8.1-intl php8.1-xml php8.1-zip php8.1-mbstring php8.1-soap php8.1-pgsql -y |
||||||
|
## настройка php |
||||||
|
RUN echo "max_input_vars=5000" >> /etc/php/8.1/cli/php.ini |
||||||
|
|
||||||
|
# установка apache2 |
||||||
|
RUN apt-get install apache2 -y |
||||||
|
## дописываем в конец apache2.conf новый параметр |
||||||
|
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf |
||||||
|
RUN echo "max_input_vars=5000" >> /etc/php/8.1/apache2/php.ini |
||||||
|
|
||||||
|
# подготовка пакета moodle |
||||||
|
RUN echo "содержимое /var/www/html:" |
||||||
|
## проверка содержимого /var/www/html |
||||||
|
RUN ls --recursive /var/www/html |
||||||
|
## очистить директорию /var/www/html перед скачиванием moodle |
||||||
|
RUN rm -rf /var/www/html/* |
||||||
|
## клонировать moodle |
||||||
|
# RUN git clone -b MOODLE_405_STABLE https://git.in.moodle.com/moodle/moodle.git /var/www/html |
||||||
|
COPY ./distro/moodle /var/www/html |
||||||
|
## устанавливаем владельцем директории пользователя www-data |
||||||
|
RUN chown -R www-data:www-data /var/www/html |
||||||
|
|
||||||
|
# Enable SSL, moodle requires it |
||||||
|
## if using proxy, don't need actually secure connection |
||||||
|
RUN a2enmod ssl && a2ensite default-ssl |
||||||
|
|
||||||
|
# запуск apache2 |
||||||
|
## право на исполнение скрипта запуска apache2 |
||||||
|
RUN chmod +x /etc/apache2/foreground.sh |
||||||
|
## запуск apache2 |
||||||
|
CMD ["bash","/etc/apache2/foreground.sh"] |
||||||
|
|
||||||
|
# далее: |
||||||
|
# в ручную запускаем скрипт инсталяции moodle .\install |
@ -0,0 +1,13 @@ |
|||||||
|
#!/bin/bash |
||||||
|
# скрипт, используемый контейнером для запуска apache2 в фоновом режиме |
||||||
|
|
||||||
|
echo "placeholder" > /var/moodledata/placeholder |
||||||
|
chown -R www-data:www-data /var/moodledata |
||||||
|
chmod 777 /var/moodledata |
||||||
|
|
||||||
|
read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat |
||||||
|
trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT |
||||||
|
|
||||||
|
source /etc/apache2/envvars |
||||||
|
tail -F /var/log/apache2/* & |
||||||
|
exec apachectl -D FOREGROUND |
@ -0,0 +1,5 @@ |
|||||||
|
# инициализация томов |
||||||
|
docker volume create moodle-data |
||||||
|
docker volume create moodle-html |
||||||
|
|
||||||
|
# .\run.ps1 |
@ -0,0 +1,13 @@ |
|||||||
|
#!/bin/pwsh |
||||||
|
|
||||||
|
# Set up Moodle in container |
||||||
|
|
||||||
|
$adminUser = "admin" |
||||||
|
$adminPassword = "admin" |
||||||
|
$siteName = "exam" |
||||||
|
$siteShort = "exam" |
||||||
|
$lang = "ru" |
||||||
|
|
||||||
|
docker exec -it -u www-data moodle /usr/bin/php /var/www/html/admin/cli/install_database.php --agree-license --adminuser=$adminUser --adminpass=$adminPassword --fullname=$siteName --shortname=$siteShort --lang=$lang |
||||||
|
|
||||||
|
Write-Host "Admin account: $adminUser/$adminPassword" |
@ -0,0 +1,27 @@ |
|||||||
|
# Переменные |
||||||
|
$container_name = "moodle" |
||||||
|
$image_name = "moodle" |
||||||
|
$build_name = "moodle" |
||||||
|
$code_location = "C:\Users\devuser\Documents\code\exam\moodle" |
||||||
|
|
||||||
|
# Остановить и удалить существующий контейнер |
||||||
|
docker stop $container_name |
||||||
|
docker rm $container_name |
||||||
|
|
||||||
|
# Удалить существующий образ |
||||||
|
docker rmi $image_name |
||||||
|
|
||||||
|
# Перейти в каталог с проектом |
||||||
|
Set-Location $code_location |
||||||
|
|
||||||
|
# Собрать jar с помощью Maven |
||||||
|
# mvn clean package |
||||||
|
|
||||||
|
# Запустить контейнер с помощью docker-compose |
||||||
|
docker-compose up -d |
||||||
|
|
||||||
|
# Пауза скрипта |
||||||
|
# Pause |
||||||
|
|
||||||
|
# Запуск скрипта инсталяции moodle |
||||||
|
# .\install.ps1 |
Loading…
Reference in new issue