Skip to main content

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

Semalam kemarin (09 Januari 2019) tidak sengaja kami sekeluarga lewat Bandung Digital Hub saat pulang dari Fish Wow Cheeseee  yang di Jl. Lombok. Bandung Digital Hub ini sendiri berlokasi tidak jauh dari dari tempat kami makan tersebut, yaitu berlokasi di Jl. Laswi No.7, Kacapiring, Batununggal, Kota Bandung, Jawa Barat 40271. Berhubung untuk bulan Januari 2019 ini sedang tidak masuk ke kantor maka saya putuskan untuk besoknya (hari ini 09 Januari 2019) nyoba untuk bekerja remote dari Bandung Digital Hub , apalagi istri yang kebetulan follower pak Ridwan Kamil di Instagram juga Facebook dan tampaknya pernah lihat ulasan mengenai tempat ini sehingga tampak antusias supaya saya datang ketempat ini ini dan mencoba bekerja dari gedung creative hub dan coworking yang keren ini.  Tempat Parkir Masalah utama saat kita datang ke coworking space terutama yang berlokasi di Bandung (atau mungkin kota-kota lainnya) adalah lahan parkir, kadang lahan parkir ...

Numpang Kerja Remote dari Bandung Digital Valley

Satu lagi co-working place  gratisan dan keren yang cukup populer dikota Bandung, co-working place yang juga memberikan fasilitas tempat kerja (co-working place) dan fitur-fitur menarik lainnya,  co-working place keren  ini adalah Bandung Digital Valley atau yang sering disingkat BDV . C o-working place  Bandung Digital Valley ini  merupakan bagian dari Telkom , mulai aktif digunakan dari sekitar tahun 2012 lalu .  Tempat ini biasanya menjadi tempat favorit bagi para pengiat startup, freelancer, dan mahasiswa . Gedung BDV Gedung BDV Gedung BDV Co-working space Bandung Digital Valley ini sendiri berlokasi di Menara Bandung Digital Valley, Jl. Gegerkalong Hilir No.47, Sukarasa, Sukasari, Kota Bandung, Jawa Barat, detailnya bisa dilihat di Google map berikut. Pemandangan jalan setelah pintu satpam. Free Co-working Space Membership Untuk mulai menggunakan fasilitas co-working space ini secara gratis maka yang pe...

Membuat Authentikasi Berbasis Token pada Spring Boot dengan Spring Security dan JWT

Setelah beberapa kali mencari tutorial tentang otentikasi aplikasi web Spring Boot dengan menggunakan JWT yang mudah dipahami akhirnya saya menemukan artikel berbahasa Inggris tapi sangat mudah dipahami  dan diikuti, artikel tersbut berada disini , dengan judul " Spring Boot Token based Authentication with Spring Security & JWT ". Untuk memudahkan orang-orang yang terbiasa membaca artikel dalam bahasa indonesia (termasuk saya sendiri), artikel ini saya buat dan susun ulang (artikel aslinya tidak tertulis dengan runtut dan dapat membuat pemula bingung dengan berbagai error yang muncul) supaya lebih mudah untuk diikuti dan dapat di gunakan bersama. Applikasi yang akan kita buat adalah aplikasi web yang setiap endpoint-nya hanya bisa di akses oleh role tertentu. 1. Tools Yang Diperlukan IntelliJ Idea text editor. Spring Assistant Plugin. Postman. PostgreSQL + DBeaver. Min Java 8 Spring Boot 2.1.8 (dengan Spring Security, Spring Web, Spring Data JPA). jjwt 0.9.1. Maven 3.6.1....