Setelah kita berkenalan sekilas dengan Docker compose kali ini kita akan membuild sebuah aplikasi yang menggunakan service dari apache sebagai web server, PHP untuk bahsa nya, phpmyadmin untuk management database dan yang terakhir dari database yaitu mysql.
Sebelum beranjak ke praktik, diharapkan kalian telah memahami cara menggunakan tools dari compose itu sendiri. dan sebenarnya apabila kalian telah memahami dan ingin langsung scriptnya, maka dapat kalian cari di Github saya.
Pertama buatlah direktori dan penempatan file sesuai dengan pemetaan berikut ini :
path: | |
|_ ./apache/ | |
| |__ Dockerfile | |
| |________ demo.apache.conf | |
|_ ./php/ | |
| |___ Dockerfile | |
|_ ./public_html/ | |
| |___ index.html | |
|_ ./docker-compose.yml |
Setelah kita membuat direktori lalu buatlah file file yang di perlukan seperti Dockerfile dan konfigurasi yang lainnya.Selanjutnya mari kita buat Docker file pada direktori apache ./apache/Dockerfile :FROM httpd:2.4.33-alpine RUN apk update; \ apk upgrade; # Copy apache vhost file to proxy php requests to php-fpm container COPY demo.apache.conf /usr/local/apache2/conf/demo.apache.conf RUN echo "Include /usr/local/apache2/conf/demo.apache.conf" \ >> /usr/local/apache2/conf/httpd.confSetelah kita membuat Docker file pada direktori apache (./apache/Dockerfile) maka kita buat juga configurasi untuk apache nya (./apache/demo.apache.conf)ServerName localhost LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so LoadModule proxy_fcgi_module /usr/local/apache2/modules/mod_proxy_fcgi.so <VirtualHost *:80> # Proxy .php requests to port 9000 of the php-fpm container ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/$1 DocumentRoot /var/www/html/ <Directory /var/www/html/> DirectoryIndex index.php Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> # Send apache logs to stdout and stderr CustomLog /proc/self/fd/1 common ErrorLog /proc/self/fd/2</VirtualHost>Lanjut ke tahap selanjutnya pada direktori php kita buat docker file nya (./php/Dockerfile):FROM php:7.2.7-fpm-alpine3.7 RUN apk update; \ apk upgrade; RUN docker-php-ext-install mysqliLanjut ke tahap selanjutnya kali ini pada direktori html_public berfungsi sebagai direktori penghubung antara host ke container. dan kali ini file index ini selain berfungsi sebagai penanda bahwa apache sudah berjalan tetapi juga berfungsi sebagai mekanisme pengecekan terhadap koneksi ke database<h1>Hello MAHBUBI!</h1> <h4>Attempting MySQL connection from php...</h4> <?php $host = '172.24.0.3:3306'; $user = 'root'; $pass = 'rootpassword'; $conn = new mysqli($host, $user, $pass); if ($conn->connect_error){die("Connection failed: " . $conn->connect_error);} echo "Connected to MySQL successfully!";?>Setelah semua proses telah tecapai maka saat nya kita membuat inti dari Compose ya itu configurasi Compose tersebut ya itu docker-compose.yml (./docker-compose.yml)version: "3.2" services: php: build: './php/' volumes: - ./public_html/:/var/www/html/ web: build: './apache/' depends_on: - php - db ports: - "8181:80" volumes: - ./public_html/:/var/www/html/ db: image: mysql:5.7 user: "root" restart: always ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_DATABASE=dbvote myadmin: image: phpmyadmin/phpmyadmin ports: - "8282:80" links: - db:db restart: always environment: - MYSQL_USERNAME=root - MYSQL_ROOT_PASSWORD=rootpassword depends_on: - db
Setelah docker-compose.yml telah kita buat maka saatnya kita jalankan perintah docker-compose up -d agar dapat memulai semua service dan konfigurasi yang telah kita buat di belakang sehingga kita tidak perlu membuka terminal lagi.
Demikianlah Tutorial untuk menjalankan, membuat dengan menggunakan tool dari docker ya itu Compose. apabila ada script yang tidak bisa bisa kalian copy dari Github saya.
sekian dari saya terimakasih telah membaca.
4 comments
Terima kasih mas, atas ilmunya, mantap dan sangat bermanfaat. Sy izin yah download scriptnya dari github.
saya sdh mencoba. namun, msh gagal untuk akses apache dan mysql. Yang baru bisa akses phpmyadmin. Mhn pencerahannya gan ??
monggo mas
salahnya di bagian mana yah mas?
Terimakasih telah berkomentar
EmoticonEmoticon