Cara menggunakan docker-php-ext-install mbstring php 8

hai… udah lama gak nulis blog lagi. berhubung saya juga baru pertama kali experimen di docker, saya menulis agar suatu saat saya butuh saya membuka blog ini kembali.

langsung saja….

Docker adalah sebuah aplikasi yang bersifat open source yang berfungsi sebagai wadah/container untuk mengepak/memasukkan sebuah software secara lengkap beserta semua hal lainnya yang dibutuhkan oleh software tersebut dapat berfungsi.

di sini kita kan membuat docker yang berjalan dengan sebuah framework laravel.

Install laravel bisa dengan clone dari repo github atau lewat composer.saat blog ini dibuat saya menggunakan laravel versi 7

composer create-project --prefer-dist laravel/laravel laravel_docker_projectcd laravel_docker_projectmkdir -p nginx/conf.dmkdir php

setelah kita buat folder dengan perintah di atas kita lanjut untuk membuat beberapa file docker diantaranya 1. docker-compose.yml, 2. Dockerfile, 3. config nginx app.conf, 4. config php.ini

oh ya untuk yang baru belajar docker dan belum mengerti dasar, mungkin link ini membantu sama seperti saya sebelum mengerti dasar docker disini.

  1. docker-compose.yml
touch docker-compose.yml

isi file docker-compose.yml seperti di bawah

NB: jangan copypaste, usahakan ketik.

version: '3'services:#PHP Serviceapp:build:context: .dockerfile: Dockerfileimage: php_servicecontainer_name: apprestart: unless-stoppedtty: trueenvironment:SERVICE_NAME: appSERVICE_TAGS: devworking_dir: /var/wwwvolumes:- ./:/var/www- ./php/local.ini:/usr/local/etc/php/conf.d/local.ininetworks:- app-network#Nginx Servicewebserver:image: nginx:alpinecontainer_name: webserverrestart: unless-stoppedtty: trueports:- "88:80"- "443:443"volumes:- ./:/var/www- ./nginx/conf.d/:/etc/nginx/conf.d/networks:- app-network#MySQL Servicedb:image: mysqlcontainer_name: dbrestart: unless-stoppedtty: trueports:- "33061:3306"environment:MYSQL_DATABASE: laravelMYSQL_USER: amrilsyaifaMYSQL_PASSWORD: qwerty1234MYSQL_ROOT_PASSWORD: qwerty1234SERVICE_TAGS: devSERVICE_NAME: mysqlnetworks:- app-network#PHPMyAdmin Servicephpmyadmin:container_name: phpmyadminimage: phpmyadmin/phpmyadminports:- "7000:80"links:- db:dbenvironment:MYSQL_USER: amrilsyaifaMYSQL_PASSWORD: qwerty1234MYSQL_ROOT_PASSWORD: qwerty1234UPLOAD_LIMIT: 3000000000networks:- app-network#Docker Networksnetworks:app-network:driver: bridge#Volumesvolumes:lbdata:driver: local

2. Dockerfile

touch Dockerfile

isi file Dockerfile seperti di bawah ini

FROM php:7.2-fpm# Copy composer.lock and composer.jsonCOPY composer.lock composer.json /var/www/# Set working directoryWORKDIR /var/www# Install dependenciesRUN apt-get update && apt-get install -y \build-essential \libmcrypt-dev \mariadb-client \libpng-dev \libjpeg62-turbo-dev \libfreetype6-dev \locales \zip \jpegoptim optipng pngquant gifsicle \vim \unzip \git \curl# Clear cacheRUN apt-get clean && rm -rf /var/lib/apt/lists/*# Install extensionsRUN docker-php-ext-install pdo_mysql mbstring zip exif pcntlRUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/RUN docker-php-ext-install gd# Install composerRUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer# Add user for laravel applicationRUN groupadd -g 1000 wwwRUN useradd -u 1000 -ms /bin/bash -g www www# Copy existing application directory contentsCOPY . /var/www# Copy existing application directory permissionsCOPY --chown=www:www . /var/www# Change current user to wwwUSER www# Expose port 9000 and start php-fpm serverEXPOSE 9000CMD ["php-fpm"]

3. app.conf

touch nginx/conf.d/app.conf

isi app.conf seperti di bawah ini

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/public;location ~ \.php$ {try_files $uri =404;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;}location / {try_files $uri $uri/ /index.php?$query_string;gzip_static on;}}

4. php.

touch php/local.ini

isi file local.ini seperti di bawah

upload_max_filesize=40Mpost_max_size=40Mmax_execution_time = 180memory_limit = 3000M

Jika sudah kita lanjut untuk build container dengan mengetik perintah di bawah

docker-compose up -d

jika image di dalam docker belum ada maka dia akan download di docker hub. pastikan tidak ada error dan ada keterangan done seperti gambar di bawah.

Apa itu Docker desktop?

Docker Desktop untuk Windows menyediakan lingkungan pengembangan untuk membangun, mengirim, dan menjalankan aplikasi dockerized. Dengan mengaktifkan mesin berbasis WSL 2, Anda dapat menjalankan kontainer Linux dan Windows di Docker Desktop pada komputer yang sama.

Langkah Install docker?

Cara Install Docker.
Step 1: Download Docker untuk Windows. Pertama download dulu Installer Docker Desktop di website resminya: ... .
Step 2: Mulai Install Docker di Windows. ... .
Step 3: Konfigurasi. ... .
Step 4: Proses Instalasi. ... .
Step 5: Instalasi Selesai. ... .
Step 6: Terima Agreement. ... .
Step 7: Install WSL 2..

Apa itu container pada docker?

Penjelasan Singkat tentang Container Docker Docker container adalah sebuah paket software yang berisi semua dependensi yang diperlukan untuk menjalankan aplikasi tertentu. Semua konfigurasi dan instruksi untuk memulai atau menghentikan container diperintahkan oleh sebuah komponen yang disebut 'image Docker'.

Kenapa harus menggunakan docker?

Alasan penggunaan Docker Docker memungkinkan penggunaan sumber daya sistem yang lebih efisien. Contoh aplikasi dalam container menggunakan memori yang jauh lebih sedikit daripadai mesin virtual (VM''s). Docker akan memulai dan berhenti lebih cepat karena dapat dikemas jauh lebih padat pada perangkat keras host mereka.