Skip to content

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

License

Notifications You must be signed in to change notification settings

yaza-putu/install-docker

Repository files navigation

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