I am actually blocked because when I add this command in my Dockerfile "RUN ln -s /etc/nginx/sites-available/local.magento /etc/nginx/sites-enabled" to activate my virtual host, I have always the same error "nginx: [emerg] open() "/var/www/html/magento2/site/nginx.conf.sample" failed (13: Permission denied) in /etc/nginx/sites-enabled/local.magento:10"
Although I have made add this command "mkdir -p /var/www/html;
chmod 777 -R /var/www/html;
chown rootless:rootless /var/www/html; ", I have read that we cannot make a chown for an other user on a folder already binded by a volume. I have read every posts on that and I tried every methods without succeed. So I guess I must not use a correct method elsewhere.
Could you please tell me what's wrong with my dockerfile?
RUN apt-get -y update
##creation du user qui sera owner des dossiers
#
RUN groupadd -g 1000 rootless \
&& useradd -g 1000 -u 1000 -d /var/www -s /bin/bash rootless
#
#
#
#installation de nginx
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
default-mysql-client \
nginx
#
#
#
# installation de php
RUN apt-get clean && apt-get update
RUN apt-get install -y ca-certificates apt-transport-https software-properties-common wget curl lsb-release
RUN curl -sSL https://packages.sury.org/php/README.txt | bash -x
RUN apt-get update
RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
RUN echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
RUN apt-get install -y php8.1-fpm php8.1-cli \
php8.1-curl \
php8.1-bcmath \
php8.1-intl \
php8.1-mbstring \
php8.1-xmlrpc \
php8.1-mcrypt \
php8.1-mysql \
php8.1-gd \
php8.1-xml \
php8.1-cli \
php8.1-ctype \
php8.1-dom \
php8.1-fileinfo \
php8.1-iconv \
php8.1-simplexml \
php8.1-soap \
php8.1-sockets \
php8.1-tokenizer \
php8.1-xmlwriter \
php8.1-xsl \
php8.1-zip
#
RUN mkdir -p /var/www/html/magento
COPY ./conf/nginx/local.magento /etc/nginx/sites-available/local.magento
#RUN ln -s /etc/nginx/sites-available/local.magento /etc/nginx/sites-enabled
RUN service php8.1-fpm stop;
RUN service php8.1-fpm start;
RUN service nginx restart;
#installation de composer
RUN curl -O https://getcomposer.org/download/2.2.17/composer.phar | php
RUN mv composer.phar /usr/local/bin/composer && chmod +x /usr/local/bin/composer
#
#
#
##MAJ des droits pour rootless
RUN set -eux; \
mkdir -p /etc/php; \
chmod 777 -R /etc/php; \
chown rootless:rootless /etc/php; \
mkdir -p /etc/nginx; \
chmod 777 -R /etc/nginx; \
chown rootless:rootless /etc/nginx; \
mkdir -p /var/pid; \
chmod 777 -R /var/pid/; \
chown rootless:rootless /var/pid; \
mkdir -p /var/run; \
chmod 777 -R /var/run/; \
chown rootless:rootless /var/run; \
mkdir -p /var/lock; \
mkdir -p /var/lock/opcache; \
chmod 777 -R /var/lock/; \
chown rootless:rootless /var/lock; \
mkdir -p /var/log; \
chmod 777 -R -R /var/log; \
chown rootless:rootless /var/log; \
mkdir -p /var/cache; \
mkdir -p /var/cache/composer; \
mkdir -p /var/cache/opcache; \
chmod 777 -R /var/cache; \
chown rootless:rootless /var/cache; \
mkdir -p /var/lib; \
mkdir -p /var/lib/mysql; \
mkdir -p /var/lib/nginx; \
mkdir -p /var/lib/nginx/body; \
chmod 777 -R /var/lib; \
chown rootless:rootless /var/lib; \
mkdir -p /var/www/html; \
chmod 777 -R /var/www/html; \
chown rootless:rootless /var/www/html; \
mkdir -p /bin; \
chmod 777 -R /bin; \
chown rootless:rootless /bin; \
touch /dev/stdout; \
chmod 777 -R /dev/stdout; \
chown rootless:rootless /dev/stdout
#
#
WORKDIR /var/www/html/magento2
VOLUME /var/myvolume
#
#
#STOPSIGNAL SIGQUIT
#
EXPOSE 80
#
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
And here my docker-compose
version: "1.0"
services:
web:
user: "1000"
build: .
ports:
- "8080:80"
volumes:
- ".:/var/www/html/magento2:rw"
depends_on:
- mysql
mysql:
image: mariadb:10.6
container_name: mysql
restart: always
ports:
- "3306:3306"
environment:
- MYSQL_USER=root
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=magento
phpmyadmin:
container_name: phpmyadmin
restart: always
image: phpmyadmin/phpmyadmin:latest
environment:
- MYSQL_ROOT_PASSWORD=root
- PMA_USER=root
- PMA_PASSWORD=root
ports:
- "8081:80"
links:
- mysql:db
elasticsearch:
container_name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.0
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
- node.name=elasticsearch
- cluster.name=es-cluster
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./magento-es-data:/usr/share/elasticsearch/data
ports:
- 9200:9200
I have tried many things regarding the existing topics on that but nothing to do... Don't judge the details on my dockerfile like my password or the comments, it's a test file nothing else:)
Thanks in advance for your help