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件のフィードバック