version: '3.8'
services:
apache:
image: php:7.4-apache
container_name: lamp_apache
ports:
- "8666:80"
volumes:
- lamp_www:/var/www/html
- lamp_apache:/etc/apache2
- lamp_php:/usr/local/etc/php
depends_on:
- mysql
networks:
- lampnet
mysql:
image: mysql:5.7
container_name: lamp_mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: userpassword
volumes:
- mysql_data:/var/lib/mysql
networks:
- lampnet
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: lamp_phpmyadmin
depends_on:
- mysql
ports:
- "8667:80"
restart: always
environment:
PMA_HOST: mysql
PMA_USER: user
PMA_PASSWORD: userpassword
UPLOAD_LIMIT: 50M
networks:
- lampnet
volumes:
mysql_data:
lamp_www:
lamp_apache:
lamp_php:
networks:
lampnet:
driver: bridge
docker exec -it lamp_apache bash
a2enmod rewrite
# restart apache2
nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# restart apache2
# env laravel arahkan ke ip mysql ,bukan localhost
DB_CONNECTION=mysql
DB_HOST=192.168.64.2
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=user
DB_PASSWORD=userpassword
# install di container php-apache
apt update
apt install libmysqlclient-dev
docker-php-ext-install pdo pdo_mysql
php -m | grep pdo_mysql
# aktifkan exten di php.ini
extension=pdo_mysql.so
# jika container php-apache gagal update ,kasih dns dari host ke docker
# W: Failed to fetch http://deb.debian.org/debian/dists/bullseye/InRelease Temporary failure resolving 'deb.debian.org'
sudo nano /etc/docker/daemon.json
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
# restart docker
sudo systemctl restart docker
# Memberikan izin penuh kepada direktori storage dan bootstrap/cache
sudo chmod -R 775 /var/www/html/larport/storage
sudo chmod -R 775 /var/www/html/larport/bootstrap/cache
# Menetapkan pemiliknya sebagai user yang tepat, misalnya www-data untuk Apache
sudo chown -R www-data:www-data /var/www/html/larport/storage
sudo chown -R www-data:www-data /var/www/html/larport/bootstrap/cache
# Pasang composer di docker apache jika butuh
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
# Lengkapi sebelum composer install
# 1. Update package list
apt-get update
# 2. Install library pendukung (dependency) untuk intl dan zip
apt-get install -y libicu-dev libzip-dev
apt-get update && apt-get install -y \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip \
git \
curl
# 3. Install dan aktifkan ekstensi PHP
docker-php-ext-install intl zip
docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# lanjut install
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate