5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

完走賞をとって Qiitan を自分にクリスマスプレゼントするAdvent Calendar 2022

Day 4

DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ④Composerのインストール(全8回)

Last updated at Posted at 2022-12-03

はじめに

かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
スクリーンショット 2022-11-30 23.31.45.png

全 8 回を予定しています。

① 作成する環境の確認
② Apache の導入
③ PHP 8.1 系のインストール
④ Composer のインストール
⑤ timezone, locale の設定
⑥ docker-compose.yml の作成(MySQL の導入)
⑦ Laravel 9 系のインストール
⑧ Apache の設定ファイルの追加

今回は、 ④ Composer のインストール についてです。

環境

以下の Docker 環境を構築します。

  • Amazon Linux 2
  • Apache 2.4
  • MySQL 8.0.28
  • PHP 8.1.x
  • Laravel 9.x

目次

1. Docker コンテナでのシェル実行の準備
2. Composer のインストール
 2-1. Composer のインストール(不採用)
 2-2. Dockerfile の編集
3. Docker イメージとコンテナの再作成

1. Docker コンテナでのシェル実行の準備

Docker コンテナでのシェルの実行するため、コンテナの中に入ります。

1-1. Docker コンテナでのシェルの実行

Docker コンテナの中に入ります。

docker container exec -it advent-calendar /bin/bash

以降、シェルを Docker コンテナで実行します。

1-2. Dockerfile の確認

前回(③ PHP 8.1 系のインストール)までの Dockerfile を確認します。

Dockerfile
FROM amazonlinux:2

RUN yum update -y \
  && yum install -y httpd \
  vim

RUN amazon-linux-extras install -y epel
RUN yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm

RUN yum clean metadata \
  && yum install -y \
  php81 php81-php php81-php-mbstring php81-php-pdo php81-php-xml \
  php81-php-fpm php81-php-mysqlnd php81-php-gd

RUN alternatives --install /usr/bin/php php /usr/bin/php81 1

RUN echo "<?php phpinfo();" > /var/www/html/info.php

CMD [ "apachectl", "-D", "FOREGROUND" ]

2. Composer のインストール

Composer をインストールします。

2-1. Composer のインストール(不採用)

試行錯誤中、公式ドキュメントのダウンロードする方法の通り Composer のインストールしようと実行した際は、下記のコマンドを実行しました。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

このコマンドを Dockerfile に記述するとしたら、下記のようになります。

infra/docker/php/Dockerfile(参考)
FROM amazonlinux:2

# 省略

# composer のインストール
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
  && php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
  && php composer-setup.php \
  && php -r "unlink('composer-setup.php');" \
  && mv composer.phar /usr/local/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1

CMD [ "apachectl", "-D", "FOREGROUND" ]

ただ、結局は、Docker イメージを利用する方法がありましたので、Dockerfile の編集はその方法で記述しました。

2-2. Dockerfile の編集

Dockerfile を編集します。なお、 Dockerfileinfra/docker/php ディレクトリを作成し、移動させました。

infra/docker/php/Dockerfile
FROM amazonlinux:2

RUN yum update -y \
  && yum install -y \
  vim \
  httpd

RUN amazon-linux-extras install -y epel
RUN yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm

RUN yum clean metadata \
  && yum install -y \
  php81 \
  php81-php \
  php81-php-mbstring \
  php81-php-pdo \
  php81-php-xml \
  php81-php-fpm \
  php81-php-mysqlnd \
  php81-php-gd

RUN alternatives --install /usr/bin/php php /usr/bin/php81 1

# composer のインストール
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1

CMD [ "apachectl", "-D", "FOREGROUND" ]

Composer のインストールについての Dockerfile の編集は、以下のリポジトリを参考にしました。

※ ディレクトリの階層も参考にしています

3. Docker イメージとコンテナの再作成

Docker イメージとコンテナの再作成して、Composer のインストール成功の確認をします。

3-1. Docker イメージとコンテナの再作成

Docker コンテナを削除します。

docker container rm -f advent-calendar

Docker コンテナを作成・起動する。

※ Dockerfile を infra/docker/php ディレクトリに移動させたので、以下を実行するときは階層を移動します

docker image build -t advent-calendar/advent-calendar:latest . 
docker container run -d --name advent-calendar -p 8080:80 advent-calendar/advent-calendar:latest

3-2. Composer のインストール成功の確認

Docker コンテナの中に入ります。

docker container exec -it advent-calendar /bin/bash

Composer のバージョンを確認します。

composer -V
実行時ログ
# r_yamate @ mbp in ~/Documents/code/advent-calendar/infra/docker/php [7:43:04] 
$ docker container exec -it advent-calendar /bin/bash           
bash-4.2# composer -V
Composer version 2.4.4 2022-10-27 14:39:29

Composer がインストールされていることが確認できました。

おわりに

今回は、 ④ Composer のインストール についての手順でした。

次回は、 ⑤ timezone, locale の設定 の手順です。

ありがとうございました。

参考にしたサイト

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?