■ Docker学習 #24:Docker Compose

前回からの続き…
Docker #23 MariaDB連携 (4)

環境


Windows 10 1909 (18363.959)
Docker Toolbox : Docker version 19.03.1
コンテナ CentOS:8.2.2004
Apache 2.4.37
PHP 7.2.24

Docker Compose?


https://docs.docker.jp/compose/overview.html
Compose = 複数のコンテナを定義し実行する Docker アプリケーションのためのツール

使ってみる


これまで作成した3つのコンテナ "my-mariadb1", "my-php1", "my-phpmyadmin1" を自動的に起動するcomposeを作成する。

1) コンテナ停止
前回作成したコンテナが起動中なので停止しておく。
docker stop my-phpmyadmin1
docker stop my-php1
docker stop my-mariadb1

2) 基準フォルダ作成
composeを作成する為の基準フォルダを作成
C:\Users\user\compose\test を作成した。

3) 必要なファイルをコピー
前回使用したphpフォルダもコンテナには必要となるので、フォルダ(C:\Users\user\php)を、
今回作成したtestフォルダ配下へコピー

4) docker-compose.ymlファイル作成
testフォルダ直下に docker-compose.yml ファイルを新規作成し以下内容を記載。(UTF-8)
my-mariadb:
image: mariadb:latest
environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=docker
    - MYSQL_USER=docker
    - MYSQL_PASSWORD=docker
ports:
    - "3306:3306"

my-php:
image: my-php
ports:
    - "80:80"
volumes:
    - /c/Users/sudoy/Documents/docker/techpjin-lamp/php/public-html:/var/www/html 
links:
    - my-mariadb

my-phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
    - "8080:80"
links:
    - "my-mariadb:db"

5) compose実行
testフォルダへ移動し "docker-compose up" を実行
→ エラー
$ docker-compose up
ERROR: In file '.\docker-compose.yml', service 'image' must be a mapping not a string.

→ ymlファイルはインデントが重要 (インデントで階層を認識する)
インデントにはタブは使えず、スペース(何個のスペースか?は定義がなさそうだが2つが基本?)を使う

正しい docker-compose.yml ファイル:
my-mariadb:
  image: mariadb:latest
  environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=docker
    - MYSQL_USER=docker
    - MYSQL_PASSWORD=docker
  ports:
    - "3306:3306"

my-php:
  image: my-php
  ports:
    - "80:80"
  volumes:
    - /c/Users/sudoy/Documents/docker/techpjin-lamp/php/public-html:/var/www/html 
  links:
    - my-mariadb

my-phpmyadmin:
  image: phpmyadmin/phpmyadmin
  ports:
    - "8080:80"
  links:
    - "my-mariadb:db"

再度 docker-dompose up

→ エラー
$ docker-compose up
Creating test_my-mariadb_1 ... done                                                                                                                   Creating test_my-php_1        ... error                                                                                                               Creating test_my-phpmyadmin_1 ...

ERROR: for test_my-php_1  Cannot start service my-php: b"error while creating mount source path '/c/Users/sudoy/Documents/docker/techpjin-lamp/php/pubCreating test_my-phpmyadmin_1 ... done
ERROR: for my-php  Cannot start service my-php: b"error while creating mount source path '/c/Users/sudoy/Documents/docker/techpjin-lamp/php/public-html': mkdir /c/Users/sudoy: protocol error"
ERROR: Encountered errors while bringing up the project.

16行目のパス、サンプルのまま書いてしまった。
自分の環境のパスに書き換える。
  volumes:
  - /c/Users/user/compose/test/php/public-html:/var/www/html 

再度 docker-dompose up

ブラウザで http://192.168.99.102 を表示 → phpinfo が表示される → 成功!
ブラウザで http://192.168.99.102/db.php を表示 → 何も表示されない → たぶん成功!

とりあえず Dockerであそぶ を参考にした学習は終了とする


Docker学習

0 件のコメント:

その他の記事