docker run でapache2を起動させたいのですがつまずいています
ディレクトリ構成
$ tree . . ├── Dockerfile └── html ├── index.php
index.php
<?php phpinfo(); ?>
ubuntu:16.04をベースにしてphpとapache2をインストールします。
Dockerfile
FROM ubuntu:16.04 MAINTAINER *** <**@**.**> RUN apt-get update && apt-get upgrade -y && \ apt-get install apache2 -y RUN apt-get install php libapache2-mod-php -y COPY ./html /var/www/html EXPOSE 80 CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]
[ターミナルでbuild]
$ docker build -t test/apache2 .
イメージは作成成功。
###質問1
[ターミナルでコンテナ起動]
$ docker run -itd -p 8080:80 -v /home/***/dir/html:/var/www/html test/apache2
...起動するもすぐ終了。
[ターミナルでコンテナ起動]
$ docker run -itd -p 8080:80 -v /home/***/dir/html:/var/www/html test/apache2 /bin/bash
これなら起動状態が継続します。
この、/bin/bashをつけるとつけない場合の挙動の差はなんでしょうか?
###質問2(本題)
docker run をした時点でapacheを起動状態にする方法はありますか?
Dockerfileに
CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]
を記述すればdocker runのときにapacheが起動する、というようなことをブログ記事などでみるのですが、起動しません。
また、
$ docker run -itd -p 8080:80 -v /home/***/dir/html:/var/www/html test/apache2 /usr/sbin/apache2 -DFOREGROUND
という記事もみましたが、これも起動しません。
今のところ、
コンテナが起動継続したコマンド↓
$ docker run -itd -p 8080:80 -v /home/***/dir/html:/var/www/html test/apache2 /bin/bash
のあと、
$ docker exec -it test/apavhe2 /bin/bash
でコンテナの中に入り、
# service apache2 start
としたら初めてブラウザからindex.phpを見ることができました。
php:7.0-apacheというイメージをdocker Hubから落としてきて使うというのは試してみて実際うまくいくのですが、今までXAMPPなど既成のソフトを使ってきてapacheとphpのつながりとかほぼ意識せずにいたので仕組みを知りたく、ご教授お願いします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/04 07:34