Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.git*
.idea*
*.md
logs/
Dockerfile
.dockerignore
docker-compose.yml
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_KEY=base64:FLuNOkD9dWz/DuQ2WCjpOkqAhBbxhS0vVakSddSLOKQ=
APP_DEBUG=true
APP_URL=http://localhost

Expand Down
11 changes: 11 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
45 changes: 45 additions & 0 deletions Documentation.md
Original file line number Diff line number Diff line change
@@ -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` в терминале.

21 changes: 21 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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"
27 changes: 27 additions & 0 deletions nginx.conf
Original file line number Diff line number Diff line change
@@ -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;
}
}
}