{"id":13460386,"url":"https://github.com/rbiodies/Inception","last_synced_at":"2025-03-24T19:32:05.688Z","repository":{"id":55430981,"uuid":"494856073","full_name":"rbiodies/Inception","owner":"rbiodies","description":":desktop_computer: Docker images with services such as MariaDB, Nginx, WordPress, Redis, FTP-server, Adminer and Portainer in virtual machine","archived":false,"fork":false,"pushed_at":"2023-04-16T09:42:28.000Z","size":211,"stargazers_count":33,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-29T06:33:26.126Z","etag":null,"topics":["21school","42","42-school","42born2code","42cursus","42projects","42school","docker","docker-compose","docker-container","docker-image","dockerfile","mariadb","nginx","wordpress"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rbiodies.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-21T17:51:53.000Z","updated_at":"2024-10-11T14:10:51.000Z","dependencies_parsed_at":"2024-10-29T06:30:43.512Z","dependency_job_id":"614b8517-57d6-4c83-a1b7-dd6bc490832c","html_url":"https://github.com/rbiodies/Inception","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbiodies%2FInception","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbiodies%2FInception/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbiodies%2FInception/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbiodies%2FInception/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rbiodies","download_url":"https://codeload.github.com/rbiodies/Inception/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245338418,"owners_count":20599038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["21school","42","42-school","42born2code","42cursus","42projects","42school","docker","docker-compose","docker-container","docker-image","dockerfile","mariadb","nginx","wordpress"],"created_at":"2024-07-31T10:00:41.068Z","updated_at":"2025-03-24T19:32:05.396Z","avatar_url":"https://github.com/rbiodies.png","language":"Shell","funding_links":[],"categories":["WELCOME"],"sub_categories":["**Inception**"],"readme":"# \u003cimg height=\"32\" width=\"32\" src=\"https://unpkg.com/simple-icons@v6/icons/docker.svg\" /\u003e Inception\nЦели данного проекта:\n- Расширение знаний в области системного администрирования с помощью Docker\n- Виртуализация нескольких образов Docker на виртуальной машине\n## Обязательная часть\n## Теоретический материал простым языком\n1. [A beginner’s guide to Docker — how to create your first Docker application](https://www.freecodecamp.org/news/a-beginners-guide-to-docker-how-to-create-your-first-docker-application-cc03de9b639f) \n2. [How to Deploy MariaDB Server to a Docker Container](https://severalnines.com/blog/how-deploy-mariadb-server-docker-container)\n3. [Руководство по Docker Compose для начинающих](https://habr.com/ru/company/ruvds/blog/450312/)\n4. [Nginx, Php-Fpm и что это вообще?](https://perfect-inc.com/journal/nginx-php-fpm-i-chto-eto-voobshche/)\n5. [MariaDB](https://ru.wikipedia.org/wiki/MariaDB)\n6. [**Установка WordPress с помощью Docker Compose**](https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose-ru)\n7. [Running MariaDB in a Docker Container](https://quebit.com/askquebit/quebit-products/running-mariadb-in-a-docker-container/#:~:text=Now%20that%20my,the%20bash%20shell%3A)\n\u003eПоследняя статья пригодится во время сдачи проекта при проверке базы данных (см. [Checklist](https://github.com/mharriso/school21-checklists/blob/master/ng_3_inception.pdf))\n## Руководство по реализации \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/virtualbox.svg\" /\u003e VirualBox - \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/debian.svg\" /\u003e Debian 10.12 (buster), \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/linuxcontainers.svg\" /\u003e Containers - debian:buster\n1. [Как установить Debian в VirualBox. Полная пошаговая инструкция](https://poznyaev.ru/debian-v-virualbox/)\n\u003eСкачать образ debian-10.12.0-amd64-xfce-CD-1.iso можно [здесь](https://cdimage.debian.org/cdimage/archive/10.12.0/amd64/iso-cd/debian-10.12.0-amd64-xfce-CD-1.iso)\n\u003cdetails\u003e\n\u003csummary\u003eЕсли вы работаете на школьных \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/apple.svg\" /\u003e Mac, не забудьте выбрать папку goinfre\u003c/summary\u003e\n\n![](https://user-images.githubusercontent.com/90090114/169686068-c054eef9-8d84-4684-84d1-2f4d92a590eb.png)\n\u003c/details\u003e\n\n\u003eЧтобы увеличить размер окна виртуальной машины в MacOS, либо нажмите на окно виртуальной машины, затем на панели основной ОС в верхей левой части экрана нажмите View-\u003eVirtual Screen 1-\u003eScale to 200% (autoscaled output), либо измените разрешение экрана в настройках виртуальной машины (возможно, появление торможения виртуальной машины)\n2. Устанавливаем необходимые для работы программы \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/vim.svg\" /\u003e [Vim](https://vitux.com/how-to-install-vim-editor-on-debian/), [Make](https://ru.stackoverflow.com/questions/51452/%D0%92-linux-debian-%D0%BD%D0%B5%D1%82-%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%BE-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B-make-%D0%9A%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D1%82%D1%8C), [Git](https://www.digitalocean.com/community/tutorials/how-to-install-git-on-debian-10)\n\u003e- Для установки \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/git.svg\" /\u003e Git достаточно выполнить пункт статьи \"Installing Git with Default Packages\"\n\u003e- [Включить «sudo» для учетной записи пользователя в Debian](https://milq.github.io/enable-sudo-user-account-debian/)\n3. [Настройка SSH в Debian для работы в терминале в основной ОС](https://losst.ru/nastrojka-ssh-v-debian)\n\u003e- Достаточно выполнить пункты статьи \"Установка SSH в Debian\" и \"Настройка сервера SSH\" (значение порта менять необязательно)\n\u003e- [Не забудьте пробросить порт для SSH в VirtualBox](https://comp-security.net/%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%D1%81%D1%8F-%D0%BA-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B5-%D0%BF%D0%BE-ssh/)\n\u003e\u003eПоле \"Адрес гостя\" можно оставить пустым\n\u003e- При возникновении ошибки \"Такое подключение уже существует\", удалите файл known_hosts в директории /Users/$USER/.ssh:\n\u003e```\n\u003erm -rf /Users/$USER/.ssh/known_hosts\n\u003e```\n\u003e- Для подключения \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/visualstudiocode.svg\" /\u003e **Visual Studio Code** к виртуальной машине запустите виртуальную машину. Откройте Visual Studio Code на основной ОС. Слева на панели VS Code выберите Extensions (Расширения) и найдите и скачайте расширение \"Remote - SSH\". Затем в VS Code откройте меню с помощью сочетания клавиш Command+Shift+P, введите \"Remote-SSH: Connect to Host...\" и нажмите Enter. Там же введите **\u003cyour_login\u003e@localhost:\u003cyour_port\u003e**, затем введите пароль пользователя виртуальной машины, откройте необходимую папку через Explorer-\u003eOpen Folder слева на панели VS Code, снова введите пароль пользователя виртуальной машины и создайте новый терминал\n4. Изменим доменное имя в Debian. Открываем файл hosts с правами администратора (root):\n```\nsudo vim /etc/hosts\n```\nДалее в терминале вводим пароль администратора (root) и в файле hosts меняем **localhost** на **\u003cyour_login\u003e.42.fr**\n\u003eНадеюсь, что Вы полностью выполнили пункт [2](https://github.com/rbiodies/Inception#:~:text=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%20%D0%BD%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D1%8B%D0%B5%20%D0%B4%D0%BB%D1%8F%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B)\n5. [Установите \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/docker.svg\" /\u003e Docker CE и Docker Compose на Debian 11/10](https://computingforgeeks.com/install-docker-and-docker-compose-on-debian/)\n\u003e- Тестировать установку Docker Сompose пока необязательно\n\u003e- [Советую клонировать виртуальную машину в Oracle VM VirtualBox](https://ddok.ru/klonirovat-virtualnuju-mashinu-v-oracle-vm-virtualbox/) (на случай непредвиденных ошибок)\n6. Создаем ожидаемую структуру каталогов, указанную в Subject\n7. [Создаем Makefile](https://habr.com/ru/company/ruvds/blog/450312/#:~:text=%E2%96%8D5.-,%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0,-%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%20%D1%82%D0%BE%D0%B3%D0%BE%2C%20%D0%BA%D0%B0%D0%BA)\n\u003eСборка проекта начинается с 5 пункта статьи\n8. Создаем файл [docker-compose.yml](https://github.com/rbiodies/inception/blob/main/srcs/docker-compose.yml), который будет содержать инструкции, необходимые для запуска и настройки сервисов\n\u003eВручную создайте директории, указанные в docker-compose.yml-\u003evolumes-\u003edevice (или пропишите их создание в Makefile). Например:\n\u003e```\n\u003emkdir -p /home/${USER}/data/db\n\u003emkdir -p /home/${USER}/data/wp\n\u003e```\n9. \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/mariadb.svg\" /\u003e MariaDB\n- Создаем [базу данных](https://github.com/rbiodies/inception/blob/main/srcs/requirements/mariadb/tools/createdb.sql) в директории srcs/requirements/mariadb/tools\n\u003ehost_name должен быть либо %, либо Вы должны задать host_name принудительно и использовать его имя\n- Создаем файл [50-server.cnf](https://exampleconfig.com/view/mariadb-ubuntu18-04-etc-mysql-mariadb-conf-d-50-server-cnf) в директории srcs/requirements/mariadb/conf\n- Создаем [.dockerignore](https://bitworks.software/2018-11-14-dont-ignore-dockerignore-it-is-expensive.html) и [Dockerfile](https://github.com/rbiodies/inception/blob/main/srcs/requirements/mariadb/Dockerfile) — файл Docker, который будет содержать инструкции, необходимые для создания окружения сервера\n\u003eТак как контейнер Docker работает полностью изолированно от хост-среды, то, чтобы получить доступ к среде (файлам) контейнера, необходимо в консоли ввести команду:\n\u003e```\n\u003edocker exec -it \u003ccontainer_name\u003e bash\n\u003e```\n10. \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/nginx.svg\" /\u003e Nginx\n- Создаем [конфигурационный файл](https://github.com/rbiodies/inception/blob/main/srcs/requirements/nginx/conf/default), который описывает виртуальный хост, в директории srcs/requirements/nginx/conf\n- Пишем [скрипт](https://github.com/rbiodies/inception/blob/main/srcs/requirements/nginx/tools/start.sh) для создания самозаверяющего сертификата для сервера в директории srcs/requirements/nginx/tools\n- Создаем .dockerignore и Dockerfile. В Dockerfile задаем базовый (родительский) образ, прописываем выполнение команд для установки пакетов nginx и openssl в контейнер, указываем на необходимость открыть порт 443, прописываем копирование конфигурационного файла default в директорию /etc/nginx/sites-enabled и скрипта в любую директорию (например, /var/www/) и описываем команду bash со скриптом в качестве аргумента, которую нужно выполнить, когда контейнер будет запущен\n11. \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/wordpress.svg\" /\u003e WordPress + настраиваем работу [php-fpm](https://www.ukraine.com.ua/wiki/hosting/configuration/php-fpm/#:~:text=PHP%2DFPM%20(FastCGI%20Process%20Manager,%2B%20Apache%2C%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%BE%20%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E.))\n- Создаем файл директив пула [www.conf](https://gist.github.com/rvanzee/2352093), позволяющий запускать несколько «пулов» дочерних процессов и иметь разные конфигурации, в директории srcs/requirements/wordpress/conf\n- Создаем файл конфигурации [wp-config.php](https://www.wpbeginner.com/beginners-guide/how-to-edit-wp-config-php-file-in-wordpress/), который является частью всех автономных сайтов WordPress, в директории srcs/requirements/wordpress/tools\n- Создаем [скрипт](https://github.com/rbiodies/inception/blob/main/srcs/requirements/wordpress/tools/start.sh) в директории srcs/requirements/wordpress/tools. Скрипт может устанавливать интерфейс командной строки для WordPress и создавать двух пользователей, один из которых является администратором Вашей базы данных WordPress\n\u003eИмя пользователя администратора не может содержать admin/Admin или administrator/Administrator (например, admin, administrator, Administrator, admin-123, и так далее) (см. Subject)\n- Создаем .dockerignore и Dockerfile. В Dockerfile задаем базовый (родительский) образ, прописываем выполнение команд для установки пакетов php7.3, php-mysqli, php-fpm, curl и sendmail с флагом -y в контейнер, указываем на необходимость открыть порт 9000, прописываем копирование конфигурационного файла [www.conf](https://gist.github.com/rvanzee/2352093) в директорию /etc/php/7.3/fpm/pool.d и скрипта в любую директорию (например, /var/www/) и описываем команду bash со скриптом в качестве аргумента, которую нужно выполнить, когда контейнер будет запущен\n12. Запустите контейнеры с помощью Makefile и зайдите на страницу WordPress в браузере своей виртуальной машины в VirtualBox по адресу своего хоста \u003cyour_login\u003e.42.fr\n\u003eЕсли все работает верно, то при первом входе на сайт появится предупреждение. Нажмите \"Дополнительно...\", затем спуститесь вниз и нажмите \"Принять риск и продолжить\"\n\n![VirtualBox_Debian Clone_26_05_2022_13_56_48](https://user-images.githubusercontent.com/90090114/170475027-c35c2f83-86e6-412c-a74f-78710f77f316.png)\n\u003eВаша тема WordPress может отличаться от темы, представленной на данном скриншоте\n## Бонусная часть\nСписок бонусов:\n- Настройте кеш Redis для своего веб-сайта WordPress, чтобы правильно управлять кешем.\n- Настройте контейнер FTP-сервер, указывающий на том вашего сайта WordPress.\n- Создайте простой статический веб-сайт на выбранном вами языке, кроме PHP (да, PHP исключен!). Например, сайт-витрина или сайт для представления вашего резюме.\n- Настроить Adminer.\n- Настройте сервис по вашему выбору, который вы считаете полезным. Во время защиты вам придется обосновать свой выбор.\n## Полезные источники\n1. [Установка \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/redis.svg\" /\u003e Redis средствами Docker](https://www.elma-bpm.ru/KB/article-7354.html#:~:text=docker%20exec%20%2Dit%20%D0%B8%D0%BC%D1%8F_%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%B0_%D1%80%D0%B5%D0%B4%D0%B8%D1%81%20bash)\n2. [Настройка Redis для WordPress](https://wpgutenberg.top/nastrojka-redis-dlja-wordpress/#:~:text=redis%2Dcli-,monitor,-%D0%92%D1%8B%2C%20%D1%81%D0%BA%D0%BE%D1%80%D0%B5%D0%B5%20%D0%B2%D1%81%D0%B5%D0%B3%D0%BE)\n3. [Установка и настройка Vsftpd в linux Debian с загрузкой файлов в каталог пользователя](https://chuzhoy007.ru/ustanovka-i-nastrojka-ftp-servera-vsftpd-na-linux-debian#:~:text=%D1%83%D0%B4%D0%B0%D0%BB%D0%B0%D1%81%D1%8C.%20%D0%9C%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%B2%D1%8B%D0%B9%D1%82%D0%B8.-,%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20FTP%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B0%20Filezilla,-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20vsftpd%20%D0%B2)\n4. [WordPress (FPM Edition) - Docker](https://github.com/mjstealey/wordpress-nginx-docker#:~:text=similar%20to%20this.-,Adminer,-An%20Adminer%20configuration)\n5. [Установка Docker \u003cimg height=\"20\" width=\"20\" src=\"https://unpkg.com/simple-icons@v6/icons/portainer.svg\" /\u003e Portainer](https://losst.ru/ustanovka-docker-portainer)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbiodies%2FInception","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frbiodies%2FInception","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbiodies%2FInception/lists"}