質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

3630閲覧

docker-composeにてDocumentRootの変更

tokuppee

総合スコア8

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/11/27 16:22

編集2021/11/27 16:27

今までdockerを使っていなかったので使ってみようと思い導入して、環境を構築しているのですが
apacheのDocumentRootの設定でつまづいているので助けていただければ嬉しいです。

設定したいDocumentoRootは
/home/test/public_html/public_html/
にしたいです。
理由は本番環境のDocumentRootがそうだからです。

/var/www/html/配下であれば問題なく設定し、接続も成功するのですが、/home/配下に設定した途端、接続ができなくなるといった状況です。
/var/www/html/test/public_html/public_html/等にすれば接続は成功します。

ツリー構造
test
├── docker
│    ├── apache
│    │    ├── Dockerfile
│    │    └── conf
│    │   ├── 000-default.conf
│    │   ├── httpd.conf
│    │   └── php.ini
│    └── db
│   ├── Dockerfile
│   ├── conf
│   │   └── my.cnf
│   └── data
├── docker-compose.yml
└── src

以下ソースです

#docker-compose.yml version: '3' services: app: build: ./docker/apache depends_on: - db volumes: - ./src:/home/test/public_html/public_html working_dir: /home/test/public_html/public_html ports: - 8888:80 db: build: ./docker/db volumes: - ./docker/db/data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: test MYSQL_USER: test MYSQL_PASSWORD: test TZ: 'Asia/Tokyo' ports: - 13306:3306
#Dockerfile FROM 'php:7.4-apache' RUN apt-get update RUN set -ex apk --no-cache add postgresql-dev libpq-dev RUN apt-get install -y vim htop libpq-dev libonig-dev RUN docker-php-ext-install mbstring pdo_mysql mysqli opcache RUN mkdir /home/test RUN mkdir /home/test/public_html RUN mkdir /home/test/public_html/public_html COPY ./conf/httpd.conf /usr/local/apache2/conf/ COPY ./conf/php.ini /usr/local/etc/php/ COPY ./conf/000-default.conf /etc/apache2/sites-available/
#httpd.conf ・ ・ ・ # # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/home/test/public_html/public_html" <Directory "/home/test/public_html/public_html"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" ・ ・ ・
#000-default.conf <VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /home/test/public_html/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet

httpd.confと000-default.conf両方にDocumentRootを設定していますが、検証した結果000-default.confの設定が反映されるみたいです。

ブラウザにて出力される結果

#Forbidden
You don't have permission to access this resource.

Apache/2.4.51 (Debian) Server at localhost Port 8888

アクセス権限がないと言われているみたいなので
/var/www/htmlのアクセス権限を確認すると

drwxrwxrwx 1 www-data www-data 4096 Nov 17 18:48 html

となっていたので
/home/test/public_html/public_htmlも同じく設定してみました。

drwxrwxrwx 7 www-data www-data 224 Nov 27 01:08 public_html

上記以外に何か設定が必要であれば教えていただきたいです。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

<VirtualHost *:80> ... <Directory /home/test/public_html/public_html> AllowOverride all Require all granted </Directory> </VirtualHost>

を足して見てください。

投稿2021/11/30 02:17

skys215

総合スコア910

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tokuppee

2021/12/01 13:25

回答ありがとうございました。 追加してみましたけれど、上手くいかなかったです。 色々試してみます。
skys215

2021/12/01 13:54

追加した後Apacheを再起動しましたか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問