🐳

DockerでPHPとAWS CLIが使える環境を作成する

2022/10/14に公開

AWS SDK for PHPやAWS CLIを同時に使えるDocker環境を作成しました。
Docker環境の作成について主に記載します。

awsクレデンシャルの準備

適切な権限をもったAWSキー作成し、~/.aws/credentialsにセットしておく。

Dockerfileの作成

FROM php:7.3.17-apache
# composerのインストール
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# パッケージのインストール
RUN apt-get update && apt-get install -y \
    tzdata \
    zip \
    unzip \
 && pecl install xdebug \
 && docker-php-ext-install pdo_mysql \
 && rm -rf /var/lib/apt/lists/*

# AWS CLIのインストール
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN ./aws/install

# AWS SDKのインストール
# RUN composer require aws/aws-sdk-php
RUN curl "https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip" -o "awssdkphp.zip"
RUN unzip awssdkphp.zip -d /tmp

# タイムゾーンを設定する環境変数
ENV TZ=Asia/Tokyo

docker-compose.ymlの作成

version: '3.8'
    
services:
  web:
    image: php_aws_cli_sdk:1.0
    build: ./
    container_name: 'php_aws_cli_sdk'
    ports:
      - 8080:80
    working_dir: '/work'
    volumes:
      - "$HOME/.aws:/root/.aws"
      - ./php.ini:/usr/local/etc/php/php.ini
      - ../../examples:/work

php.iniの準備

利用するphp.iniを利用目的にあわせて準備する。内容はたとえば以下のようになる。

[Date]
date.timezone = Asia/Tokyo

[mbstring]
mbstring.language = Japanese

コンテナ起動方法

docker-compose up -d --build docker exec -it php_aws_cli_sdk bash

実行方法

<my_profile>, <php_file_name>は自分の環境に合わせる。
aws cliを使う aws s3 ls --profile <my_profile>
aws sdk for phpを使う php <php_file_name>.php

終了方法

docker-compose stop
docker-compose rm
docker image ls(削除するIMAGE IDを確認)
docker image rm -f <IMAGE ID>

Discussion