diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a9b7095 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.git* +.idea* +*.md +logs/ +Dockerfile +.dockerignore +docker-compose.yml diff --git a/.env.example b/.env.example index 9bb1bd7..a50038e 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,6 @@ APP_NAME=Laravel APP_ENV=local -APP_KEY= +APP_KEY=base64:FLuNOkD9dWz/DuQ2WCjpOkqAhBbxhS0vVakSddSLOKQ= APP_DEBUG=true APP_URL=http://localhost diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3718353 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM composer:2.3.9 as builder +COPY . /srv/app +WORKDIR /srv/app +RUN composer install + +FROM php:8.1.7-fpm-alpine3.16 +COPY --from=builder /srv/app /srv/app +WORKDIR /srv/app +RUN chmod -R 777 storage +RUN chmod -R 775 bootstrap/cache +CMD ["php-fpm"] diff --git a/Documentation.md b/Documentation.md new file mode 100644 index 0000000..3fedf7a --- /dev/null +++ b/Documentation.md @@ -0,0 +1,45 @@ +# Документация для первой (минимальной) части тестового задания + +В репозитории расположено простое скриптовое приложение на языке программирования *(далее по тексту, ЯП)* PHP, с использованием фреймворка [Laravel](https://laravel.com/) сл. версий: + +* Laravel v9.17.0 (PHP v8.1.7) + +Для данного приложения были написаны `Dockerfile` и `.dockerignore` файл. + +#### Для сборки образа в терминале перейдите в директорию приложения и введите следующую команду: + +`docker build .` + +ID образа (image) будет выведен по окончанию работы команды, однако, чтобы узнать его, можно ввести: + +`docker image ls` + +и найти последний созданный по времени. + +#### Для запуска контейнера на основе получившегося образа введите там же: + +`docker run -it -p 8000:8000 my_image_id` + +где +* `my_image_id` - ID образа, созданного командой `build`, +* `-i` - сокращение для `--interactive`, данный флаг позволяет потоку STDIN поддерживаться в открытом состоянии, даже если контейнер не подключен к STDIN, +* `-t` - сокращение для `--tty`, данный флаг выделяет псевдотерминал, который соединяет используемый терминал с потоками STDIN и STDOUT контейнера, +* `-p` - сокращение для `--port`, данный флаг представляет собой конструкцию `-p n:m`, которая перенаправляет порт Docker `n` на порт `m` компьютера, на котором выполняется контейнер. + +Для обращение к работающему в контейнере приложению необходимо ввести в браузере `http://localhost:8000`. + +# Документация для второй (дополнительной) части тестового задания + +Приложение было дополнено `docker-compose.yml` и `nginx.conf` файлами. + +#### Для запуска приложения через docker-compose необходимо ввести, находясь в директории с приложением, следующую команду: + +`docker compose up --build` + +где +* `up` - создает и запускает контейнеры, +* `build` - собирает образы для контейнеров. + +Для обращение к работающему в контейнере приложению необходимо ввести в браузере `http://localhost:8000`. +Или `curl localhost:8000` в терминале. + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..bab224a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,21 @@ +--- +version: '3.9' + +services: + php: + build: + context: . + container_name: php_fpm + env_file: + - .env.example + + nginx: + image: nginx:mainline-alpine + container_name: nginx_proxy + volumes: + - ./public:/srv/app/public + - ./nginx.conf:/etc/nginx/nginx.conf:ro + links: + - php + ports: + - "8000:8000" diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..2a18a5f --- /dev/null +++ b/nginx.conf @@ -0,0 +1,27 @@ +events { + +} + +http { + + include /etc/nginx/mime.types; + include /etc/nginx/conf.d/*.conf; + + server { + index index.php; + listen 8000; + server_name localhost; + root /srv/app/public; + + location ~ \.php$ { + try_files $uri =404; + fastcgi_pass php:9000; + fastcgi_index index.php; + include fastcgi_params; + include /etc/nginx/fastcgi.conf; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param QUERY_STRING $query_string; + fastcgi_param PATH_INFO $fastcgi_path_info; + } + } +}