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

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

ただいまの
回答率

89.23%

DockerでCentOS+Apacheのコンテナを作成してlocalhostに繋ぐとForbiddenになる

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 3,730

wasi300

score 62

いつもお世話になります。

[CentOS+Apache]のコンテナをDockerFileから作成し、
起動した後、DocumentRootをVolumeのディレクトリに向けた後、
CentOSのWelcomeが表示されないように、
Welcomeの設定が書いてあるファイルのファイル名を変更しました。

無事DocumentRootを見に行くようにはなったのですが、
Volumeのディレクトリの所有者がrootになっているのでapacheに変更しようとしたところ、
chownコマンドを打っても変更されません。

[CentOS+Apache]でhtmlファイルを表示したいのですが、
どのような考え方、手順で作業すればよいのでしょうか。

ファイル構成

root
├ docker-compose.yml
├ src
│ └ index.html < このHTMLを表示したい。
├ apache
  └ httpd.conf

ブラウザでGETリクエストしたドメイン

HTTP/GET
localhost

httpd.confの関係ありそうな箇所

ServerName localhost:80
DocumentRoot "/src"

BuildしたDockerFile

FROM centos:centos7
COPY ./httpd.conf /etc/httpd/conf/httpd.conf

ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
#CMD ["/usr/sbin/init"]

RUN yum -y update
RUN yum -y install wget
RUN yum -y install vim
RUN yum -y install firewalld
RUN yum -y install httpd httpd-devel mod_ssl
RUN yum -y install mlocate
RUN updatedb
RUN yum -y install sudo
RUN yum clean all

WORKDIR /src

EXPOSE 80
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
version: '3'

services:
  apache:
    build: ./apache
    container_name: "apache"
    ports:
      - "8080:80"
    privileged: true
    volumes:
      - ./src:/src

以上です。いつもすみませんがよろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

今回の Docker 環境構築を成功させた次のステップがどこを目指しているのかまではわかりませんが: とりあえず動かしてみるのであれば centos/httpd (or 公式の httpd) イメージを利用するのが早いかもしれません

Web サーバの設定の変更に際して、いちど、実行するイメージから直接ファイルを取り出してしまうのが手っ取り早く確実かもわかりません

ただ、設定の変更に関して、今回の例だと Dockerfile , docker-compose.yml 側の設定で充分で、敢えて Docker コンテナ内のデフォルト設定を変更する必要は無かったりします

ディレクトリ構成とファイル内容

ディレクトリ構成:

.
├── apache
│   ├── Dockerfile
│   └── httpd.conf
├── docker-compose.yml
└── src
    └── index.html

apache/Dockerfile:

FROM centos/httpd

# 設定変更したい場合
ADD httpd.conf /etc/httpd/conf/httpd.conf

httpd.conf:

(Web サーバの動作を設定できるようにファイルを取り出す。設定変更は特にしない)

# 実行対象の Docker イメージから、格納されているものを取り出し
docker run centos/httpd cat /etc/httpd/conf/httpd.conf > apache/httpd.conf

docker-compose.yml:

version: '3'

services:
  apache:
    build: ./apache
    container_name: "apache"
    ports:
      - "8088:80"
    privileged: true
    volumes:
      - ./src:/var/www/html

イメージの作成と立ち上げ

# (docker-compose.yml があるディレクトリに cd して移動)

docker-compose build && docker-compose up

何か参考になれば幸いです

Links

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/27 15:27

    goufさん

    お答え頂きありがとうございます。

    >> 今回の Docker 環境構築を成功させた次のステップがどこを目指しているのかまではわかりませんが: とりあえず動かしてみるのであれば centos/httpd (or 公式の httpd) イメージを利用するのが早いかもしれません

    すみません。現象の出ている部分のみ質問させて頂いておりました。
    ゴールは、dockerに[centOS+Apache][centOS+PHP]のコンテナを用意し、
    AWSのEC2でdockerをインストールし、同じ環境を作成しようと考えております。
    目指してましたが、[centOS+Apache]の部分で進まなくなったので質問させて頂きました。

    公式イメージで試してみようと思います。どうもありがとうございました。

    キャンセル

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

  • ただいまの回答率 89.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る