Setup Symfony 4, PostgreSQL, Nginx diatas Docker

Sebuah catatan dalam menyiapkan env di lokal komputer untuk mulai development dengan Symfony 4, PostgreSQL dan Nginx.

1. Siapkan Files dan Folders yang Diperlukan

Saya menyiapkan project pada folder berikut ~/Documents/projects/Obunda/news-portal.

╰─➤  mkdir docker

╰─➤  mkdir docker/nginx

╰─➤  touch docker/docker-compose.yaml

╰─➤  touch docker/nginx/Dockerfile 

╰─➤  mkdir docker/php-fpm         

╰─➤  touch docker/php-fpm/Dockerfile

╰─➤  touch docker/nginx/default.conf

╰─➤  ls docker
docker-compose.yaml  nginx  php-fpm

╰─➤  ls docker/nginx
default.conf  Dockerfile

╰─➤  ls docker/php-fpm
Dockerfile



Siapkan folders dan files yang diperlukan. 


Folders dan Files yang telah dibuat.

2. Buat Files Konfiguasi untuk Nginx


2.1. File default.conf Milik Nginx

 server {
     listen       80;
     server_name  localhost;
     root /var/www/symfony/public;
     location / {
         try_files $uri @rewriteapp;
     }
     location @rewriteapp {
         rewrite ^(.*)$ /index.php/$1 last;
     }
     location ~ ^/index\.php(/|$) {
         fastcgi_pass php:9000;
         fastcgi_split_path_info ^(.+\.php)(/.*)$;
         include fastcgi_params;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         fastcgi_param HTTPS off;
     }
     error_log /var/log/nginx/symfony_error.log;
     access_log /var/log/nginx/symfony_access.log;
 }


Konfigurasi milik Nginx.


2.2 File Dockerfile Milik Nginx


FROM nginx:latest

COPY default.conf /etc/nginx/conf.d/

Dockerfile milik Nginx.

2.3 Hasil kedua files diatas



Hasil dua files konfigurasi milik Nginx

3. File Dockerfile Milik PHP-FPM

FROM php:7.2-fpm

RUN apt-get update

RUN apt-get install -y zlib1g-dev libpq-dev git libicu-dev libxml2-dev \
     && docker-php-ext-configure intl \
     && docker-php-ext-install intl \
     && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
     && docker-php-ext-install pdo pdo_pgsql pgsql \
     && docker-php-ext-install zip xml

RUN curl --insecure https://getcomposer.org/composer.phar -o /usr/bin/composer && chmod +x /usr/bin/composer

 # Set timezone
 RUN rm /etc/localtime
 RUN ln -s  /usr/share/zoneinfo/Asia/Jakarta  /etc/localtime
 RUN "date"

 WORKDIR /var/www/symfony


Dockerfile milik PHP-FPM.

4. File docker-compose.yaml Untuk Ketiga Image di Atas


 version: '2'
 services:
     postgres:
         image: postgres
         ports:
             - '5433:5432'
     php:
         build: php-fpm
         ports:
             - '9002:9000'
         volumes:
             - ../:/var/www/symfony:cached
             - ./logs/symfony:/var/www/symfony/var/logs:cached
         links:
             - postgres
     nginx:
         build: nginx
         ports:
             - '8080:80'
         links:
             - php
         volumes_from:
             - php
         volumes:
             - ./logs/nginx/:/var/log/nginx:cached


docker-compose.yaml

5. Build Files diatas jadi Images


╭─yoesoff@yoesoff-ThinkPad-X220 ~/Documents/projects/Obunda/news-portal/docker
╰─➤  docker-compose build

docker-compose build

6. Jalankan Applikasi 


╭─yoesoff@yoesoff-ThinkPad-X220 ~/Documents/projects/Obunda/news-portal/docker
╰─➤  docker-compose up


docker-compose up

Bila ingin docker-compose up berjalan di background tambahkan -d, jadi sbb:
╰─➤  docker-compose up -d


Sumber referensi: https://blog.rafalmuszynski.pl/how-to-configure-docker-for-symfony-4-applications/


Comments

Popular posts from this blog

Numpang Kerja Remote dari Bandung Creative Hub

Numpang Kerja Remote dari Bandung Digital Valley

Cara Decompile berkas Dex dan Apk Android