1週間後、なんとかそれを機能させることができました。私はホストをいじるのをやめ、Dockerが私の命を救う方法を学び始めました。
この投稿は私に鍵を与えました:
Docker-異なるWebサイトのホストとコンテナーでApacheを実行します
dockerについての私の最初の読みは、DockerによるPHP Web開発です。
要約すると、ホストサーバーにapache2.2とPHP5.3をインストールする必要はありません。必要なもの(通常は1つのサービス)をインストールできる分離されたコンテナーを用意し、ホストOSバージョンとの非互換性を忘れることができます。Dockerがすべてを管理します。したがって、Debian squeeze OSの場合と同様に、Apache 2.2 + PHP 5.3のコンテナを1つ持つことができます。Wheezyの場合と同様に、Apache 2.2 + PHP 5.4を含む別のコンテナ、ストレッチなどのように、Apache 2.4 + PHP7.0を含む別のコンテナ。すべてが同時に機能し、異なるドメインにサービスを提供しています。後者を実現するには、ホスト上でapache / nginxをリバースプロキシとして機能させ、Dockerポートマッピングのおかげで各ドメインを異なるapache-phpコンテナーにリダイレクトします。ホストにapache / nginxをインストールする必要はありません。コンテナ内に置くこともできます。
dockerの方法は、各(マイクロ)サービスをコンテナーに含めることです。これにより、mariaDBを別のコンテナーに入れることができます。
私の手順(要約):(十分な評判を得たら、リンクに投稿することはできません。編集して追加します)
0 - Dockerについて読む(多いほど良い):Dockerfileを使用してイメージを構築する方法、ベストプラクティス、Docker内のネットワークなど...
1 -Dockerをインストールします。常に公式ガイドに従ってください。
2-将来のイメージ名(/ home / user / docker / images / apache22php53など)でディレクトリを作成し、内部にDockerfileと構成(この場合はvirtualhost conf)を作成します。私のDockerfileは次のとおりです。
FROM debian:squeeze
LABEL maintainer="raguchi@gmail.com"
# squeeze new mirrors
RUN echo "deb http://archive.debian.org/debian/ squeeze contrib main non-free" > /etc/apt/sources.list
RUN apt-get update
# Common packages
RUN apt-get update && \
apt-get install -y --force-yes curl wget
RUN apt-get update && \
apt-get install -y --force-yes \
apache2 \
libapache2-mod-php5 \
ntp \
php5 \
php5-curl \
php5-gd \
php5-ldap \
php5-mcrypt \
php5-mysql \
vim
RUN a2enmod \
php5 \
rewrite \
ssl
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
# RUN chown -R www-data:www-data /var/www
COPY conf/apache/virtualhosts /etc/apache2/sites-enabled
# disable default virtualhost
RUN a2dissite 000-default
EXPOSE 80
EXPOSE 443
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
dir内で、パスの中にvirtualhost confファイルを置きます:conf / apache / virtualhosts /
3-(ディレクトリ内の以前のcd)でイメージをビルドします。
sudo docker build -t apache22php53 .
4-コンテナを起動します:
sudo docker run -ti -d -p 2253:80 -v /var/www/html:/var/www --name apache22php53 apache22php53 /bin/bash
Dockerは2253ホストポートを80コンテナポートにマップ(-p)します。ホストドキュメントルート(/ var / www / html)もapache-containerドキュメントルート(squeeze内は/ var / www)にマウント(-v)します。コンテナー名(--name)も設定されます。
5-コンテナーへのSSH:
sudo docker exec -ti apache22php53 /bin/bash
必要に応じてapacheを起動します(私の場合のように)。「終了」してホストCLIに戻ります。
6 -... yourvhostdomain.com:2253に移動すると、PHP5.3がロードされた状態でApacheが実行されていることがわかります。
これが基本です。その後、コンテナー内のホストデータ(www、データベースなど)をマウントする方法、コンテナーがコンテナー間およびホストと通信する方法(DockerネットワークのプライベートIP)、Docker-composeを使用して複数のコンテナーをセットアップする方法について学習します一度に(Web、データベースなど)、複数のコンテナーWebサーバーなどのリバースプロキシ