AdityaDees: Docker

Hot

https://publishers.chitika.com/

Contact us for advertising.
Showing posts with label Docker. Show all posts
Showing posts with label Docker. Show all posts

24 January 2022

Ask Menghapus Semua None Image di Docker AdityaDees

15:32 0

menghapus semua none image di docker - Ketika menjalankan image secara tunggal, sangat memungkinkan image akan terduplikat jika command error. Inilah yang mengakibatkan image bernama <none> sering muncul. Ini adalah image yang tidak berguna dan harus dihapus karena cukup membuat storage penuh. Berikut ini adalah command untuk menghapus seluruh image <none> di docker image secara otomatis.

$ docker rmi $(docker images -f "dangling=true" -q)


Read More

13 December 2021

Ask Cara Deploy Laravel, Codeigniter dan Framework PHP Lainnya di Docker AdityaDees

22:48 0
Cara Deploy Laravel, Codeigniter dan Framework PHP Lainnya di Docker
Bismillah…
Beberapa tahun belakangan kita tentu sering mendengar istilah docker dan kontainerisasi. Nah pada tulisan saya kali ini kita akan langsung mempraktekkan bagaimana cara men-deploy atau memasang website yang sebelumnya sudah kita buat kedalam sebuah container. Sebelum memulai, ada baiknya kita mengerti terlebih dahulu apa itu container dan apa itu docker.
  • Container
  • Container yang dimaksud disini merupakan wadah yang digunakan untuk menempatkan seluruh kebutuhan aplikasi baik itu web server, database ataupun kebutuhan lainnya yang dibutuhkan oleh aplikasi kita tadi supaya bisa berjalan layaknya di komputer lokal.

  • Docker
  • Docker merupakan salah satu platform yang bisa digunakan sebagai container/wadah untuk menempatkan seluruh kebutuhan software yang kita butuhkan. Docker seperti halnya sebuah VM yang berjalan di mesin virtual, hanya saja docker lebih ringan daripada VM yang membutuhkan resource lebih besar daripada docker.

    Dengan menggunakan docker, kita bebas memilih versi bahasa pemrograman, database, library dan software lainnya tanpa khawatir terjadi bentrok antara 1 aplikasi dengan aplikasi lainnya, karena docker bersifat isolate dimana konfigurasi sebuah project anda tidak akan mengganggu konfigurasi dan kebutuhan project yang lain.

    Misalnya saya memiliki 2 buah project, dimana project 1 menggunakan php versi 7.4 sedangkan project kedua menggunakan php versi 8.0 maka antara 2 project tersebut tidak mungkin terjadi bentok karena masing-masing project sudah memiliki container dan konfigurasi terisolasi masing-masing.

Nah, setelah mengetahui pengertian diatas, sekarang kita akan memulai untuk proses deploy. Disini saya akan men-deploy sebuah project aplikasi web dengan bahasa pemrograman php dimana aplikasi ini menggunakan nginx sebagai web server dan MySQL sebagai database. Kita akan lakukan konfigurasi di file tersendiri untuk masing-masing tools tersebut. Untuk php dan nginx disini saya menggunakan varian alpine linux, karena image docker dari alpine ini paling ringan dan paling kecil untuk ukuran filenya dibandingkan dengan image lainnya.

Berikut adalah langkah-langkah untuk melakukan deploy website ke docker :
  1. Didalam project website anda, buat sebuah direktori/folder bernama docker-config kemudian tambahkan lagi didalamnya direktori mysql, nginx dan php seperti berikut ini:
  2. Deploy php ke docker
  3. Didalam direktori mysql, buat sebuah direktori baru dengan nama db. Kemudian tempatkan di dalam direktori db ini database dari website yang anda buat sebelumnya.
  4. Selanjutnya beralih ke direktori nginx, buat sebuah file docker dengan nama web.dockerfile. Kemudian masukkan konfigurasi seperti dibawah ini didalam file tersebut :
  5. FROM nginx:1.21.4-alpine

    ADD ./docker-config/nginx/vhost.conf /etc/nginx/conf.d/default.conf
  6. Masih di direktori yang sama, tambahkan lagi sebuah file vhost.conf, dimana file ini berisi konfigurasi untuk nginx.
  7. server {
    listen 80;
    index index.php index.html;
    root /var/www/public/public;

    location / {
    try_files $uri /index.php?$args;
    }

    location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass app:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    }
  8. Beralih ke direktori php yang sudah dibuat sebelumnya, buat sebuah file php.dockerfile, lalu masukkan konfigurasi seperti dibawah ini :
  9. FROM php:8.0.5-fpm-alpine

    RUN docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable pdo_mysql
  10. Selanjutnya kembali ke direktori awal project. Lalu buat sebuah file docker-compose.yml. Didalam file inilah kita akan mendeklarasikan seluruh kebutuhan guna menjalankan website kita tadi.
  11. version: '3'
    services:
    web:
    build:
    context: ./
    dockerfile: ./docker-config/nginx/web.dockerfile
    container_name: inventory-webserver
    volumes:
    - ./:/var/www/public
    ports:
    - "8080:80"
    networks:
    - app-network

    app:
    build:
    context: ./
    dockerfile: ./docker-config/php/php.dockerfile
    container_name: inventory
    volumes:
    - ./:/var/www/public
    networks:
    - app-network
    links:
    - database
    depends_on:
    - database

    database:
    image: mariadb
    container_name: inventory_database
    restart: unless-stopped
    tty: true
    ports:
    - "3307:3306"
    environment:
    MYSQL_DATABASE: inventory_sample
    MYSQL_ROOT_PASSWORD: 12345
    SERVICE_NAME: mysql
    SERVICE_TAGS: dev
    volumes:
    - dbdata:/var/lib/mysql/
    - ./docker-config/mysql/db:/docker-entrypoint-initdb.d
    networks:
    - app-network

    networks:
    app-network:
    driver: bridge
    volumes:
    dbdata:
    driver: local
  12. Setelah seluruh file tersebut dibuat, jalankan docker-compose di terminal/command line anda dengan perintah :
  13. docker-compose up
  14. Tunggu hingga proses selesai, dan jalankan website anda di http://localhost:8080
Demikianlah tutorial cara deploy laravel, codeigniter dan framework PHP lainnya di docker. 
Read More

02 September 2021

Ask Fix Set Up Docker PHP, Nginx, Mysql, PHPMYADMIN AdityaDees

12:02 0

docker dan docker compose setup untuk membangun web server - Docker telah mempermudah proses scaling aplikasi dan bisa digunakan di dalam proses development maupun deployment. Artikel kali ini akan membahas tentang langkah-langkah membangun web server sendiri seperti XAMPP, LAMP, atau MAMP dengan docker.

1. Struktur Folder

Berikut ini adalah struktur folder web server yang kita beri nama localapp.



2. Set up Docker Compose File

/docker-compose.yaml

# Mendefinisikan Versi Docker Compose
version: '3.8'

# Mendefinisikan Voulmes
volumes:
# Untuk Menyimpan Seluruh Data Dalam Database
localdb:

# Mendefinisikan Networks
networks:
# Untuk Mengkoneksikan Antar Services
localapp:

# Mendefinisikan Services Yang Akan Dipakai
services:
# Nama Service Untuk Web Server (nginx)
nginx:
# Gunakan Image Nginx Tag Alpine
image: nginx:alpine
# Kaitkan Folder Lokal Ke Container
volumes:
# Folder Web
- "./htdocs:/var/www"
# Folder Konfigurasi Nginx
- "./.build/nginx/conf.d:/etc/nginx/conf.d"
# Ekspose Port
ports:
# 80 (http://localhost)
- "80:80"
# Jalankan Nginx Jika Service php Dan db Sudah Berjalan
depends_on:
- php
- db
# Koneksikan Ke Network localapp
networks:
- localapp

# Nama Service Untuk PHP
php:
# Build Image Dengan Dockerfile Di Folder ./.build/php
build: ./.build/php
# Kaitkan Folder Lokal Ke Container
volumes:
# Jalankan PHP Di Semua Folder Web
- "./htdocs:/var/www"
# Koneksikan Ke Network localapp
networks:
- localapp

# Nama Service Untuk Database
db:
# Gunakan Image mysql Tag latest
image: mysql:latest
# Environment Yang Dibutuhkan mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_PASSWORD: secret
MYSQL_USER: homestead
# Expose Port Agar Dapat Diakses Melalui Aplikasi MYSQL Client (phpmyadmin)
ports:
- "3306:3306"
# Simpan Semua Data Dalam Volumes localdb
volumes:
- "localdb:/var/lib/mysql"
# Koneksikan Ke Network localapp
networks:
- localapp

# Nama Service Untuk PHPMYADMIN
phpmyadmin:
# Gunakan Image phpmyadmin
image: phpmyadmin/phpmyadmin
# Expose Port
ports:
# Gunakan Port 8081 Untuk Mengakses phpmyadmin
- "8081:80"
# Koneksikan Ke Network localapp
networks:
- localapp

3. Set up Nginx Config

/.build/nginx/conf.d/localapp.conf

server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}

4. Buat image PHP

/.build/php/Dockerfile

FROM php:7.4-fpm
RUN docker-php-ext-install mysqli

5. Jalankan Aplikasi

docker-compose up --build



Seluruh kode set up ini bisa kalian clone/unduh secara gratis melalui link ini: Docker Web Server Fix Set Up

Oke, itulah cara membangun web server dengan fix set up di docker. Semoga artikel ini bisa membantu kalian paham tentang docker dan bisa memudahkan kalian meng-improve web server kalian sendiri seperti menambah bahasa perl, python, atau install composer di dalam container misalnya. Semua itu bisa dilakukan hanya dengan membuat service baru di docker-compose.

Terima Kasih!

Read More

18 July 2021

Ask Menjalankan Cron Job Laravel di Docker Container AdityaDees

21:50 0

menjalankan cron job di docker container - Cron Job adalah program yang memungkinkan kita dapat menjalankan perintah secara otomatis dan terjadwal. Di Laravel sendiri, terdapat layanan Task Schedule yang dapat dihubungkan dengan cron job di server. Berikut ini adalah trik untuk menjalankan cron job di dalam docker container.

1. Buat Schedule.

Saya akan membuat schedule sederhana, yang mana setiap 1 menit sekali, saya akan me-request endpoint API getUser menggunakan curl.

app/Console/Kernel.php

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/

protected $commands = [
//
];

/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/

protected function schedule(Schedule $schedule)
{
$schedule->exec('curl -s http://localhost:8000/api/getUser')->everyMinute();
}

/**
* Register the commands for the application.
*
* @return void
*/

protected function commands()
{
$this->load(__DIR__.'/Commands');

require base_path('routes/console.php');
}
}


2. Buat file bernama crontab (untuk di-copy ke container).

/crontab

* * * * * (lokasi php) (lokasi file artisan) schedule:run >> /var/log/cron.log 2>&1
# line kosong, jangan dihapus

contoh:

/crontab
* * * * * /usr/local/bin/php /var/www/artisan schedule:run >> /var/log/cron.log 2>&1
# line kosong, jangan dihapus


3. Edit Dockerfile.

Pada file Dockerfile, sisipkan perintah berikut ini untuk apply cron job yang sudah dibuat.

/Dockerfile

# install cron dan crontab
RUN apt install cron

# copy file crontab ke direktori cron.d
COPY crontab /etc/cron.d/crontab

# masuk sebagai root
USER root

# beri akses eksekusi crontab
RUN chmod 0644 /etc/cron.d/crontab

# apply cron job
RUN crontab /etc/cron.d/crontab

# buat log file
RUN touch /var/log/cron.log

# jalankan command cron ketika container sudah berjalan
CMD cron && tail -f /var/log/cron.log

Setelah semua selesai, cron sudah berjalan ketika container dijalankan. Server akan menjalankan perintah sesuai dengan Laravel Schedule. Untuk melihat log cron job yang sedang berjalan, silahkan akses /var/log/cron.log di container. Bisa dengan docker / docker-compose exec.

Oke sekian artikel kali ini tentang cara menjalankan cron job laravel task scheduling di docker, semoga bermanfaat. Terima kasih!

Read More

13 July 2021

Ask Menjalankan SonarQube Dari Docker Untuk Projek Lokal AdityaDees

21:37 0

menjalankan sonarqube dari docker - Untuk para developer dan QA, pasti sudah familiar dengan SonarQube, sebuah layanan untuk automatisasi review kode untuk pendeteksi bug, kerentanan, dan kode yang tidak bersih.

SonarQube telah rilis di docker hub yang berarti kita bisa memakai layanannya melalui container docker dengan mudah. Kita tidak perlu menginstall web server, database, atau java sdk di device kita. Semua sudah di-bundle jadi satu di images sonarqube di docker.

Oke, berikut ini adalah cara install dan menjalankannya.

A. Menjalankan SonarQube dari Docker

1. Pull Images
Seperti biasa, kita harus pull images sonarqube dan sonar scanner dari docker hub.

docker pull sonarqube:latest
docker pull sonarsource/sonar-scanner-cli:latest

2. Run Container
Kita buat container menggunakan image sonarqube yang sudah di-pull tadi. Disini saya expose port nya ke 9001 (defaultnya adalah 9000)

docker run --name sonarqube -p 9001:9000 sonarqube

3. Masuk ke aplikasi SonarQube di browser (http://localhost:9001)


Login menggunakan username: admin, password: admin. Setelah itu, kalian harus set up password baru.

B. Menjalankan Projek Lokal di SonarQube

1. Buat Projek Baru
Buat projek dan set up token di sonarqube. Disini saya sudah punya projek laravel bernama Travellist Demo. Lalu, saya menamai projek di sonarqube sama dengan projek laravel saya, Travellist Demo.
 

2. Jalankan Sonar Scanner
Jalankan image sonar-scanner-cli. Masuk ke root folder projek, lalu jalankan perintah ini.

docker run --rm -v "$(pwd):/usr/src" sonarsource/sonar-scanner-cli \ 
-D sonar.projectKey=(PROJECT KEY MU) \
-D sonar.host.url=http://172.17.0.2:9000 \
-D sonar.login=(TOKEN MU)

Catatan:
Host url http://172.17.0.2:9000/ adalah host dan default dari images sonarqube. Terkadang IP bisa saja berbeda. Untuk cek IP container, silahkan jalankan perintah berikut.

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sonarqube

3. Selesai
Jika berhasil, akan terbuat otomatis folder .sonarscanner di root folder project.


Dan di web SonarQube, kalian akan di-redirect otomatis.


Sekarang SonarQube sudah bisa digunakan di projek.

Oke itulah tadi cara menjalankan sonarqube untuk projek lokal melalui docker. Semoga bermanfaat! Terima kasih!
Read More

https://payclick.com/

Contact us for advertising.