michiya0509
@michiya0509

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Dockerコンテナ上で「403 Forbidden」Web表示できない

解決したいこと

dockerコンテナを起動後、ページアクセスするも
「403 Forbidden」と表示されます。権限などの問題かと思いますが、何が原因なのかをご教示いただければと思います。よろしくお願い致します。

発生している問題

image.png

各種設定

docker-compose.yml

version: '3' 
services:
  web:
   image: nginx:1.15.6 
   ports:
    - "8000:80" 
   depends_on:
    - app 
   volumes:
    - ./docker/web/default.conf:/etc/nginx/conf.d/default.conf
    - .:/var/www/html 
  app:
   build: ./docker/php 
   volumes:
    - .:/var/www/html 
   depends_on:
    - mysql 
  mysql:
   image: mysql:5.7 
   environment: 
    MYSQL_DATABASE: ****
    MYSQL_USER: root
    MYSQL_PASSWORD: ****
    MYSQL_ROOT_PASSWORD: ****
   ports:
    - "3306:3306"
   volumes: 
    - mysql-data:/var/lib/mysql
volumes: 
  mysql-data: 

Docker.file

FROM php:7.2-fpm

# install composer
RUN cd /usr/bin && curl -s http://getcomposer.org/installer| php && ls -s /usr/bin/composer.phar
RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim

RUN apt-get update \
    && apt-get install -y libpq-dev \
    && docker-php-ext-install pdo_mysql pdo_pgsql mysqli

WORKDIR /var/www/html

defoult.conf

server {

    listen 80;
    root /var/www/html/;
    index index.php index.html index.htm;

    access_log /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass  app:9000;
        fastcgi_index index.php;

        include       fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

0

2Answer

docker-compose.yml

    - .:/var/www/html

私の環境Ubuntu 22.04+httpd:2.4で類似のエラーが出ました。
dockerコマンドを実行時のフォルダが「/home/taro」や「/root」などのユーザー用ルートではないでしょうか。
これらのフォルダはアクセス権750、700なので都合が悪いようです。
これらの直下に適当なフォルダ「/home/taro/test」を作るとアクセス権755のフォルダになります。
testに必要なファイルを移動して実行したところうまくいきました。

1Like

Comments

  1. @Nakaotos
    こちら同じ問題になり、上記の対応で解決できました。大変助かりました!

Dockerに詳しくないため、Linuxの経験で回答します。
以下のコマンドで確認したときに読み取り権限が無いとかだと思います。
その場合はchmod +r /var/www/htmlで読み取りを付与すれば解決すると思います。

ls -l /var/www/html
0Like

Your answer might help someone💌