Skip to content
Snippets Groups Projects
Dockerfile 1.72 KiB
Newer Older
Tibo's avatar
Tibo committed
#### Step 1 : composer

FROM cylab/php74 AS composer
Tibo's avatar
Tibo committed

COPY . /var/www/html
WORKDIR /var/www/html
Alex's avatar
Alex committed
# RUN composer install --no-dev --optimize-autoloader
Alex's avatar
Alex committed
RUN composer install --optimize-autoloader
# RUN pecl install redis && docker-php-ext-enable redis
Tibo's avatar
Tibo committed

#### Step 2 : node

FROM node AS node

COPY . /var/www/html
WORKDIR /var/www/html
RUN npm --version && npm install && npm run prod

#### Step 3 : the actual docker image

FROM php:7.4-apache

### PHP

# we may need some other php modules, but we can first check the enabled
Tibo's avatar
Tibo committed
# modules with
# docker run -it --rm php:7.4-apache php -m
# RUN docker-php-ext-install mbstring
RUN pecl install -o -f redis \
    &&  rm -rf /tmp/pear \
    &&  docker-php-ext-enable redis
Tibo's avatar
Tibo committed

### Apache

# change the document root to /var/www/html/public
RUN sed -i -e "s/html/html\/public/g" \
    /etc/apache2/sites-enabled/000-default.conf

# enable apache mod_rewrite
RUN a2enmod rewrite

### Laravel application

# copy source files
COPY . /var/www/html
COPY --from=composer /var/www/html/vendor /var/www/html/vendor
COPY --from=node /var/www/html/public/css /var/www/html/public/css
COPY --from=node /var/www/html/public/js /var/www/html/public/js
COPY --from=node /var/www/html/public/fonts /var/www/html/public/fonts

# copy env file for our Docker image
COPY env.docker /var/www/html/.env

Tibo's avatar
Tibo committed
# create sqlite db structure
Tibo's avatar
Tibo committed
RUN mkdir -p storage/app \
Tibo's avatar
Tibo committed
    && touch storage/app/db.sqlite \
    && php artisan migrate

# these directories need to be writable by Apache
RUN chown -R www-data:www-data /var/www/html/storage \
    /var/www/html/bootstrap/cache

Tibo's avatar
Tibo committed
# clear config cache
RUN php artisan config:clear
RUN php artisan route:clear
Tibo's avatar
Tibo committed

Tibo's avatar
Tibo committed
### Docker image metadata

VOLUME ["/var/www/html/storage", "/var/www/html/bootstrap/cache"]