My days of...

生活のことなど、がんばろう

DockerでLAMP環境作成 2021/06

Dockerを使ってLAMP環境の作成の復習(2021年6月)。参考にした資料はこちら

sugumura.github.io

フォルダの構成

lamp(root)
 /db
  conf.d
   my.cnf
 /web
  Dockerfile
 docker-compose.yml

# docker-compose.yml
version: "3.7"
services: 
  web:
    build: 
      context: .
      dockerfile: ./web/Dockerfile
    ports: 
      - 8000:80
    volumes: 
      - .:/var/www/html
  db:
    image: mysql:8.0.17
    restart: always
    # command: --default-authentication-plugin=mysql_native_password #<-- db/conf.dに設定追加のため削除
    environment: 
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=sample
      - TZ='Asia/Tokyo'
    ports: 
      - 3306:3306
    # volumes - 追加
    volumes: 
      - ./docker/conf.d/my.cnf:/etc/mysql/conf.d/my.cnf
      - data:/var/lib/mysql
  adminer:
    image: adminer
    restart: always
    ports: 
      - 8080:8080
# volumes - 追加
volumes: 
  data:

ApachePHPのDockerfile

# web/Dcokerfile
FROM php:8-apache-buster

# nodeとnpmのインストール
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -

# Composerで必要なものとMysql、GD利用のパッケージ
RUN apt-get update
RUN apt-get install -y libxml2-dev libbz2-dev zlib1g-dev
RUN apt-get install -y libsqlite3-dev libsqlite3-0 mariadb-client curl exif ftp
RUN apt-get install -y libonig-dev
RUN docker-php-ext-install intl
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN docker-php-ext-enable mysqli
RUN docker-php-ext-enable pdo
RUN docker-php-ext-enable pdo_mysql
RUN apt-get install -y --fix-missing zip unzip
RUN apt-get install -y --fix-missing git

# Composerのインストール
# RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN composer self-update --2

RUN a2enmod rewrite


EXPOSE 80

MySQL用の設定(my.cnf)

[mysqld]
default_authentication_plugin=mysql_native_password

コンテナを作成して、Webコンテナを立ち上げ

docker-compose build web

    docker-compose up -d

試しにLaravelをインストール

docker-compose exec web composer create-project --prefer-dist laravel/laravel sample

localhost:8000/sample/publicへブラウザでアクセス

Laravel index

Laravel Home

表示されました。

コンテナ内のDebianにComposerをインストールする方法は
1) RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
2) COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN composer self-update --2
1と2はどちらが正解なのだろう・・・?