2
1

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.

Docker ComposeでLAMP環境構築

Posted at

はじめに

Dockerを勉強しているので、メモも兼ねて自分なりの解釈を記事に残していこうと考え、投稿しています。
勉強途中のため、間違っている部分、非効率な部分などなどあると思います。その際は、ご指摘いただけたら嬉しいです。

本投稿の行うこと

Docker Composeを用いてLAMP環境を構築する

Docker Composeとは

複数のDockerコンテナを同時に連携して動かしたい時に使います。
Dockerコンテナ一つに対して一つのサービスが望ましいため、LAMP環境のような複数のサービスを同時に起動する環境を整える場合はDocker Composeを使用するのが望ましいです。

もちろんDocker Composeを使用しなくても、一つのコンテナにLAMP環境を構築することもできます。

Docker Composeの基礎知識

Dockerで一つのコンテナを作成する場合、「Dockerfile」が設計図となり、そこに記述されている内容をもとに環境が構築されます。
複数のコンテナを一括で作成して連携していくDocker Composeでは、「docker-compose.yml」が設計図となります。
各種コマンドを使用する場合は、「docker-compose.yml」ファイルが置かれているディレクトリで実行する必要があります。

LAMP環境を構築

ディレクトリ構成
/ -- docker-compose.yml
               web-php/ -- Dockerfile
                  html/ -- index.html

ファイルを準備する

docker-compose.yml
docker-compose.yml
# docker-composeファイル形式のバージョンを示す
version: '3'

services:
  # webという名称のサービスを定義している
  web-php:
    # buildで指定されたディレクトリにあるDockerfileを使用する
    build: ./web-php
    # コンテナ名を指定する
    container_name: web-php
    # volumesでディレクトを指定することで、ローカルディレクトリとコンテナ内を同期できる
    volumes:
      - ./html:/var/www/html
    # このサービスが公開するポート番号を指定する | ホスト側のポート番号:コンテナ内のポート番号 |
    ports:
      - "8080:80"
    # depends_onでサービス間の依存関係を指定できる(dbコンテナが起動してからweb-phpコンテナが起動する)
    depends_on:
      - db

  db:
    # imageでDockerfileを使用せずにyml内で直接イメージを指定できる
    image: mysql:5.7
    # コンテナ名を指定する
    container_name: db
    # environmentで環境変数を定義する
    environment:
      - MYSQL_ROOT_PASSWORD=password
Dockerfile
Dockerfile
FROM php:7.3-apache
index.html
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Test Page Welcome!</h1>
</body>
</html>
ポイント
  • docker-compose.yml
    volumesを設定し、ローカルとコンテナ内を同期することで、ローカルで書いたソースコードを即時反映してデバックなどが可能。

  • Dockerfile
    docker-composeでもDockerfileを使用することができるので、細かいコンテナの操作(RUN COPYなど)を実行することができる

Docker Composeを使用する

ファイルが準備出来たら、以下のコマンドを実行してコンテナを作成・起動しましょう。

docker-compose up -d

これで、「docker-compose.yml」に記述した二つのコンテナ(web-php・db)が起動している。
以下のコマンドで確認することができる。

# 現在起動中のコンテナを閲覧
docker-compose ps

# 作成済みのコンテナ(停止中を含む)を閲覧
docker-compose ps -a
localhostにアクセス

localhostにアクセスできれば構築成功です。

http://localhost:8080

今後の課題

・php.iniをdockerの利点を活用してスマートに作成する方法を学習する。
・dockerを使用してLaravelの環境を構築できるようになる。

参考情報

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?