Dockerfile から docker-compose.yaml を作る
docker で nginx と php-fpm 環境を構築してみる で作成した Dockerfile をもとに docker-compose.yaml を作成して、docker イメージを docker-compose コマンドでコンテナの生成と起動ができるようにする。
手順の流れ
- docker-compose.yaml の作成
- nginx と php-fpm の Dockerfile の設定を変更する
- docker-compose で両イメージを起動する
- コンテナへの接続を確認する
- コンテナの停止と削除をする
docker-compose.yaml の作成
$ pwd
$HOME/works/docker-sample/php-tcp
$ touch docker-compose.yaml
$ vim docker-compose.yaml
$ cat docker-compose.yaml
docker-compose.yaml の設定内容は次の通り。
version: '3'
services:
php-sample:
restart: always
build:
context: .
dockerfile: ./php/Dockerfile
nginx-sample:
restart: always
ports:
- 80:80
build:
context: .
dockerfile: ./nginx/Dockerfile
nginx と php-fpm の Dockerfile の設定を変更する
このまま docker-compose コマンドからコンテナを作成すると、nginx と php-fpm のイメージに取り込む設定ファイル読み込み時にエラーが発生するので、両 Dockerfile に変更を加える。
php-fpm の Dockerfile
変更前にオリジナルの複製を作り、変更点がわかるようにする。
$ cp php/Dockerfile php/Dockerfile.orig
$ vim php/Dockerfile
$ diff -uw php/Dockerfile.orig php/Dockerfile
変更点は次の通り。
(行頭 (-) は変更前の記述。行頭 (+) は変更後の記述)
--- php/Dockerfile.orig 2022-03-27 13:43:21.000000000 +0900
+++ php/Dockerfile 2022-03-27 13:43:50.000000000 +0900
@@ -1,5 +1,5 @@
FROM php:8.1.4-fpm-alpine
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
-COPY settings/php.ini /usr/local/etc/php/conf.d/php.ini
-COPY src /usr/share/nginx/html
+COPY php/settings/php.ini /usr/local/etc/php/conf.d/php.ini
+COPY php/src /usr/share/nginx/html
Dockerfile から参照する相対パスを docker-compose.yaml から参照した場合の相対パスに変更している。
nginx の Dockerfile
$ cp nginx/Dockerfile nginx/Dockerfile.orig
$ vim nginx/Dockerfile
$ diff -uw nginx/Dockerfile.orig nginx/Dockerfile
nginx の Dockerfile の変更点は次の通り。
$ diff -uw nginx/Dockerfile.orig nginx/Dockerfile
--- nginx/Dockerfile.orig 2022-03-27 13:44:42.000000000 +0900
+++ nginx/Dockerfile 2022-03-27 13:45:20.000000000 +0900
@@ -1,3 +1,3 @@
FROM nginx:1.21.6-alpine
-COPY settings/default.conf /etc/nginx/conf.d/default.conf
+COPY nginx/settings/default.conf /etc/nginx/conf.d/default.conf
docker-compose で両イメージを起動する
$ docker-compose up -d --build
Creating network "php-tcp_default" with the default driver
Building php-sample
...
Creating php-tcp_nginx-sample_1 ... done
Creating php-tcp_php-sample_1 ... done
docker-compose でコンテナを起動すると、Creating network "php-tcp_default" with the default driver
と実行されて、一時的なネットワークを自動的に生成してくれる。
コンテナへの接続を確認する
コンテナの起動を確認して、nginx に接続をしてみる。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b4fc4a4e62ee php-tcp_nginx-sample "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp php-tcp_nginx-sample_1
1f6bbef6b036 php-tcp_php-sample "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 9000/tcp php-tcp_php-sample_1
$ curl -I -s localhost:80
HTTP/1.1 200 OK
Server: nginx/1.21.6
Date: Sun, 27 Mar 2022 08:27:17 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/8.1.4
WEB ブラウザから http://localhost/ にアクセスをして、phpinfo();
の実行結果が表示されることを確認する。
コンテナの停止と削除をする
$ docker-compose down
Stopping php-tcp_nginx-sample_1 ... done
Stopping php-tcp_php-sample_1 ... done
Removing php-tcp_nginx-sample_1 ... done
Removing php-tcp_php-sample_1 ... done
Removing network php-tcp_default
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Author And Source
この問題について(Dockerfile から docker-compose.yaml を作る), 我々は、より多くの情報をここで見つけました https://qiita.com/centipede/items/2b6f1c0c7de9225c026a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .