🐳
DockerでPHPとAWS CLIが使える環境を作成する
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