/install-docker

Esay install docker on linux and deploy apps in docker, this config now for for php project

Primary LanguageDockerfileMIT LicenseMIT

Install docker & docker-compose + deploy laravel di docker (Development Local)

#tested on linux, windows, and mac (Development Local)

#container & images

  • MYSQL
  • PHPMYADMIN
  • PHPFM
  • NGINX

#Requirement

  • Docker Desktop Community 2.3.0.5
  • Docker Compose

Instalasi di linux / mac

  • Silakan clone repo ini
  • Install docker
sudo apt-get install docker.io
  • install docker compose
sudo apt-get install docker-compose

Install di windows

Build Docker images

  • masuk ke folder docker
## masuk ke folder docker
cd /folder-docker
## build up images and contaner running
sudo docker-compose up -d --build
  • tunggu proses ini sampai selesai, akan memakan waktu beberapa menit
  • done
###untuk mengecek container apakah sudah berjalan 
sudo docker container ls

cara deploy app (contoh:laravel)

  • silakan install composer terlebih dahulu disini

  • buka docker-compose.yml

  • tambahakn lokasi folder sistem di volume phpfm dan ngix, lihat gambar 1 dan gambar 2 alt text gbr 1 alt text gbr 2 alt text gbr 3

  • setting vhost lihat pada gambar 3

  • registerkan port di nginx, contoh pada vhost kita buat projek kita-anak-indonesia di listen port 80, di nginx kita akan melakukan port forwading : jika user mengakses port 8080 kita akan forward ke port 80, contoh: (8080:80), di gambar 2 bisa anda lihat pada ports

  • contoh diatas saya pakai kita-anak-indonesia (laravel projek)

  • pada .env laravel username database= root, password database = temp123,DB_HOST=ip addres LAN/WLAN atau DB_HOST=mysql

  • jika sudah selesai, anda bisa menjalankan ulang service containernya

Start container dengan docker-compose

sudo docker-compose up -d

Mematikan service container

sudo docker-compose down

delete all image, container, network, etc on docker

sudo docker system prune --all

note : sebelum mendeploy app silakan dimatikan terlebih dahulu dockernya, setelah selesai silakan di up kembali

  • fix permission storage/logs dan bootstrap/cache di laravel
sudo chmod -R ugo+rw storage/logs
sudo chmod -R ugo+rw bootstrap/cache

Gunakan solusi dibawah ini jika kalian melihat error seperti dibawah ini saat mengakses phpmyadmin

mysqli::real_connect(): (HY000/1130): Host 'ip address' is not allowed to connect to this MySQL server

anda bisa menyesuaikan config docker-compose.yml dengan solusi dibawah ini
contaner name for mysql : mysql
mysql_root_password : temp123
mysq user : root
mysql user password : temp123
error ini terjadi pada saat docker-compose up --build , proses pendaftaran data mysql tidak terjadi, seperti pendaftaran mysql_root_password, user host mysql baik itu username dan passwordnya.

  • Access terminal mysql container
sudo docker exec -ti contaner_mysql_name bash
  • Login to mysql
mysql -u root -p
  • Change password mysql root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';
  • Check existing database users
SELECT host, user FROM mysql.user;
  • Add user mysql
CREATE USER 'root'@'%' IDENTIFIED BY 'your_password_root';
  • Grant All Privilages database
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  • exit mysql and terminal container
  • down docker-compose
  • stop docker service
sudo service docker stop
  • start docker service
sudo service docker start
  • up docker-compose

Optimasi speed request response docker di mac dan windows (Recomended)

lokasi edit di docker-compose.yml tambahkan pada volume app di phpfpm

:rw,delegated

menjadi seperti ini

services:
  phpfpm:
    container_name: phpfpm
    build: './phpfpm'
    links:
      - mysql
    volumes:
      - ./apps/name-app:/var/www/name-app:rw,delegated

Detail https://blog.javan.co.id/meningkatkan-performa-docker-di-macos-dan-windows-5e67abc55e8