DEV Community

Gustavo Jhon
Gustavo Jhon

Posted on

docker compose and dockerfile

docker-compose.yml

services:

  laravel-docker:
    container_name: laravel-docker
    build: .
    volumes:
      - ./laravel-app:/var/www/html
    ports:
      - 9000:80

  mysql_db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: taravel_docker
    ports:
    - 3306:3306

  phpmyadmin:
    image: phpmyadmin:latest
    ports:
      - 9001:80
    environment:
      - PMA_ARBITRARY=1
Enter fullscreen mode Exit fullscreen mode

Dockerfile

FROM php:8.1.0-apache
WORKDIR /var/www/html

# Mod Rewrite
RUN a2enmod rewrite

# Linux Library
RUN apt-get update -y && apt-get install -y \
    libicu-dev \
    libmariadb-dev \
    unzip zip \
    zlib1g-dev \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev 

# Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# PHP Extension
RUN docker-php-ext-install gettext intl pdo_mysql gd

RUN docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd
Enter fullscreen mode Exit fullscreen mode

run

docker-compose build
docker-compose up
Enter fullscreen mode Exit fullscreen mode

Makefile

setup:
    @make build
    @make up 
    @make composer-update
build:
    docker-compose build --no-cache --force-rm
stop:
    docker-compose stop
up:
    docker-compose up -d
composer-update:
    docker exec laravel-docker bash -c "composer update"
data:
    docker exec laravel-docker bash -c "php artisan migrate"
    docker exec laravel-docker bash -c "php artisan db:seed"
Enter fullscreen mode Exit fullscreen mode
composer create-project laravel/laravel .
make composer-update
make data
Enter fullscreen mode Exit fullscreen mode

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay