Docker Composeを使用する

DOCKERでCMDコマンドを仕込んでみる。 | 自分、ぼっちですが何か? (taki-lab.site)

Dockerは1アプリケーション1コンテナというのが基本的な使い方らしいです。

今回はPHP+DBという構成を構築してみたいと思います。

こういった複数をアプリ(コンテナ)をセットで扱いたい場合は、docker-composeを使用します。

プロジェクト構成

PHPはDockerファイルで、DBはDockerHubで用意されている物を使用します。

Dockerfile

FROM php:7.4-apache

RUN apt-get update && apt-get install -y \
    tzdata \
    libpq-dev \
    && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-install pdo_pgsql

ENV TZ=Asia/Tokyo

php.ini

[Date]
date.timezone = Asia/Tokyo

[mbstring]
mbstring.language = Japanese

sample1.php

<?php
print('ただいまの日時は、'.date("Y-m-d H:i:s").'です。<br>');

$dbname='postgres';
$host='ex11_db';
$dbuser='postgres';
$dbpass='postgres';

try {
    $dbh = new PDO("pgsql:dbname=$dbname;host=$host", $dbuser, $dbpass);
    print('正常に接続されました。<br>');

    print('sysid, ユーザー名<br>');

    $sql = 'SELECT * FROM pg_user';
    foreach ($dbh->query($sql) as $row) {
        print($row['usesysid'].', ');
        print($row['usename'].'<br>');
    }
} catch (PDOException $e) {
    print('エラー:'.$e->gwtMessage());
    exit();
}

?>

docker-compose.yml

version: '3.8'

services:
  db:
    image: postgres:13.1-alpine
    container_name: 'ex11_db'
    expose:
      - "5432"
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - HOGE=hoge

  web:
    image: ex11/web:1.0
    build: ./web
    container_name: 'ex11_web'
    ports:
      - 8080:80
    working_dir: '/var/www/html'
    volumes:
      - ./web/php.ini:/usr/local/etc/php/php.ini
      - type: bind
        source: ./web/src
        target: /var/www/html
    depends_on:
      - db
~/dockerenv/ex11$ docker-compose up
~/dockerenv/ex11$ docker-compose down --rmi all

「Docker Composeを使用する」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください