I'm currently trying to dockerise a Laravel application, I've managed to create my Dockerfile and docker-compose.yml with the dependencies I need. However, I am struggling to get php-fpm to kick in that will show my application.
Dockerfile
FROM php:8.0-fpm-alpine
COPY composer.lock composer.json /var/www/html/
WORKDIR /var/www/html
RUN apk update && apk add --no-cache \
build-base shadow vim curl \
php8 \
php8-fpm \
php8-common \
php8-pdo \
php8-pdo_mysql \
php8-mysqli \
php8-mbstring \
php8-xml \
php8-openssl \
php8-json \
php8-phar \
php8-zip \
php8-gd \
php8-dom \
php8-session \
php8-zlib \
nodejs \
npm
RUN docker-php-ext-install pdo pdo_mysql
RUN docker-php-ext-enable pdo_mysql
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN rm -rf /var/cache/apk/*
RUN usermod -u 1000 www-data
COPY --chown=www-data:www-data . /var/www/html
USER www-data
COPY package.json /var/www/html/
RUN npm install
RUN npm run dev
EXPOSE 9000
CMD ["php-fpm"]
docker-compose.yml
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
image: heychazza/joinservers.com
container_name: app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /var/www/html
expose:
- "9000:80"
volumes:
- ./:/var/www/html
networks:
- mynet
nginx:
image: nginx:alpine
container_name: nginx
restart: unless-stopped
tty: true
ports:
- "8080:80"
volumes:
- ./:/var/www/html
- ./deployment/nginx/conf.d/:/etc/nginx/conf.d/
depends_on:
- app
networks:
- mynet
db:
image: mariadb:latest
container_name: db
restart: unless-stopped
tty: true
ports:
- "33060:3306"
environment:
MYSQL_DATABASE: laraveldb
MYSQL_USER: laravel
MYSQL_PASSWORD: laravelpassworddb
MYSQL_ROOT_PASSWORD: rootpasswordmysql
MYSQL_ROOT_HOST: '%'
volumes:
- mysqldata:/var/lib/mysql/
networks:
- mynet
networks:
mynet:
driver: bridge
volumes:
mysqldata:
driver: local
What am I doing? I'm running Docker from a MacBook, and are looking to deploy this onto a production Debian machine.
I'm still new to docker, so apologies if I've missed anything out.