Docker chown folder on volume binded with magento

256 Views Asked by At

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

0

There are 0 best solutions below