Hello,
The docker compose is:
portal:
build:
context: /home/devops/Projects/portal
dockerfile: Dockerfile
container_name: portal
entrypoint: ["/usr/local/bin/entrypoint.sh"]
command: ["php-fpm"]
network_mode: host
environment:
APP_ENV: local
APP_DEBUG: "true"
DB_HOST: host.docker.internal
DB_PORT: 3306
DB_DATABASE: laravel
DB_USERNAME: root
DB_PASSWORD: 123456
# XDEBUG_CONFIG: "client_host=host.docker.internal client_port=9003"
PORTAL_VIEW_URL: http://127.0.0.1:3000
volumes:
- /home/devops/Projects/portal:/var/www
# - /var/www/vendor
ports:
- "127.0.0.1:9000:9000"
And Dockerfile
is:
FROM php:8.3-fpm
RUN apt update && apt install -y \
build-essential \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
libonig-dev \
libzip-dev \
zip unzip git curl net-tools ncat iputils-ping \
&& apt clean && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install pdo_mysql mbstring zip exif pcntl gd
RUN pecl install xdebug && docker-php-ext-enable xdebug
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local
/bin --filename=composer
RUN groupadd -g 1000 www && useradd -u 1000 -ms /bin/bash -g www www
COPY --chown=www:www . /var/www/
WORKDIR /var/www
COPY --chown=www:www entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh
ENV APP_ENV=local
ENV APP_DEBUG=true
ENV XDEBUG_MODE=develop,debug
USER www
EXPOSE 9000
CMD ["php-fpm"]
The entrypoint.sh
is:
#!/bin/bash
if [ "$(ls -A /var/www)" ]; then
echo "Directory is not empty, skipping copy"
else
echo "Directory is empty, copying files"
cp -R /tmp/app/. /var/www/
fi
if [ -f "/var/www/composer.json" ]; then
cd /var/www
composer install --no-interaction --optimize-autoloader --no-scripts
fi
if [ -z "$(grep 'APP_KEY=base64' /var/www/.env)" ]; then
echo "Generating APP_KEY..."
cd /var/www
php artisan key:generate
fi
chown -R www:www /var/www/storage
chown -R www:www /var/www/bootstrap/cache
chown -R www:www /var/www/vendor
chmod -R 775 /var/www/storage
chmod -R 775 /var/www/bootstrap/cache
chmod -R 775 /var/www/vendor
But inside the container I get the following error:
$ php artisan tinker
Warning: require(/var/www/vendor/autoload.php): Failed to open stream: No such f
ile or directory in /var/www/artisan on line 9
Call Stack:
0.0002 462856 1. {main}() /var/www/artisan:0
Fatal error: Uncaught Error: Failed opening required '/var/www/vendor/autoload.p
hp' (include_path='.:/usr/local/lib/php') in /var/www/artisan on line 9
Error: Failed opening required '/var/www/vendor/autoload.php' (include_path='.:/
usr/local/lib/php') in /var/www/artisan on line 9
Call Stack:
0.0002 462856 1. {main}() /var/www/artisan:0
Which part is wrong?
Thank you.