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 phpsetelah 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.
- 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: local2. Dockerfile
touch Dockerfileisi 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 //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
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.iniisi file local.ini seperti di bawah
upload_max_filesize=40Mpost_max_size=40Mmax_execution_time = 180memory_limit = 3000MJika sudah kita lanjut untuk build container dengan mengetik perintah di bawah
docker-compose up -djika 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.