Buenas, me he pasado de Windows a Debian y me está dando algún problema Docker.
docker-compose.ymlversion: "3"
services:
webserver:
build: ./bin/apache2
container_name: 'app_webserver'
restart: 'unless-stopped'
ports:
- '80:80'
- '443:443'
links:
- mysql
volumes:
- ./www:/var/www/html/
#- ./config/php/php.ini:/etc/php/php.ini
- ./logs/apache2:/var/log/apache2
mysql:
build: ./bin/mysql
container_name: 'app_mysql'
restart: 'unless-stopped'
ports:
- '3306:3306'
volumes:
- ./data/mysql:/var/lib/mysql
# - ./data/mysql-dump:/docker-entrypoint-initdb.d
- ./logs/mysql:/var/log/mysql
environment:
MYSQL_ROOT_PASSWORD: root
phpmyadmin:
build: ./bin/phpmyadmin[spoiler]
container_name: 'app_phpmyadmin'
restart: 'unless-stopped'
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- '8080:80'
volumes:
- /sessions
Dockerfile WebserverFROM php:7.3.12-apache
RUN apt-get -y update --fix-missing
RUN apt-get -y upgrade
# Install useful tools
RUN apt-get -y install nano
# Install PHP dependencies
RUN docker-php-ext-install mysqli
RUN docker-php-ext-install pdo_mysql
RUN apt-get install -y libzip-dev zip && docker-php-ext-configure zip --with-libzip && docker-php-ext-install zip
# # Install Composer globally
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'c5b9b6d368201a9db6f74e2611495f369991b72d9c8cbd3ffbc63edff210eb73d46ffbfce88669ad33695ef77dc76976') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
# # Install Laravel globally
RUN composer global require laravel/installer
ENV PATH="/root/.composer/vendor/bin:${PATH}"
# # Install NodeJS
RUN curl -sL https://deb.nodesource.com/setup_13.x | bash -
RUN apt-get install -y nodejs
# Turn on Rewrite Module
RUN a2enmod rewrite
RUN service apache2 restart
Como véis lo que hago es desplegar 3 contenedores con Apache (Composer + Laravel + NodeJS), MySQL y PHPMyAdmin. En Windows me funcionaba tal cual está, el problema es que ahora al desplegarlo desde Linux e intentar acceder desde localhost:80
me salta un mensaje en Laravel que dice:
UnexpectedValueException
The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
Además de eso cuando intento modificar algún archivo de la carpeta bindeada también me dice que no tengo permisos de escritura.
Edit: Me han comentado de añadir el usuario de apache al grupo users con:
RUN usermod -u 1000 www-data
RUN usermod -aG users www-data
RUN chown -R www-data:www-data /var/www
De esta forma funciona correctamente, el problema es que si creo archivos en la carpeta bindeada utilizando PHP Artisan por ejemplo php artisan make:model Ejemplo
. El achivo Ejemplo se crea con el usuario y grupo root.