PodmanでLEMP環境を作る

ルートフォルダだったので、パスを /srv から /home に変更(2024/09/29)

LEMPとは

LEMPとは Linux+Nginx+MariaDB(MySql)+PHP 環境の事

LEMP環境用のポッド作成

ポート指定は使っていないポートで

podman pod create --name lemp-pod -p 39080:80 -p 39081:8080

Nginxのコンテナ作成

ダミーコンテナを作成し設定ファイル取り出し

mkdir -p \
  /home/podman/lemp-pod/nginx/conf.d \
  /home/podman/lemp-pod/public
podman run -d --name tmp docker.io/library/nginx:latest
podman cp tmp:/etc/nginx/nginx.conf /home/podman/lemp-pod/nginx/nginx.conf
podman cp tmp:/etc/nginx/conf.d/default.conf /home/podman/lemp-pod/nginx/conf.d/default.conf
podman rm -f tmp

Nginxコンテナの作成

podman create --pod lemp-pod --name lemp-nginx \
  -v /home/podman/lemp-pod/nginx/nginx.conf:/etc/nginx/nginx.conf \
  -v /home/podman/lemp-pod/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
  -v /home/podman/lemp-pod/public:/usr/share/nginx/html \
  docker.io/library/nginx:latest

PHP-FPMのコンテナ作成

ダミーコンテナを作成し設定ファイル取り出し

mkdir -p /home/podman/lemp-pod/php/conf.d
podman run -d --name tmp-php php:fpm-alpine
podman cp tmp-php:/usr/local/etc/php/php.ini-production /home/podman/lemp-pod/php/php.ini
podman rm -f tmp-php

PHP-FPMコンテナの作成

podman create --pod lemp-pod --name lemp-phpfpm \
  -v /home/podman/lemp-pod/php/php.ini:/usr/local/etc/php/php.ini:ro \
  -v /home/podman/lemp-pod/public:/usr/share/nginx/html \
  php:fpm-alpine

MariaDBのコンテナ作成

DB用のフォルダ作成

mkdir -p /home/podman/lemp-pod/mariadb

MariaDBコンテナの作成

podman create --pod lemp-pod --name lemp-db \
  --restart=unless-stopped \
  -e MARIADB_ROOT_PASSWORD="password" \
  -v /home/podman/lemp-pod/mariadb:/var/lib/mysql \
  docker.io/library/mariadb:latest

phpMyAdminのコンテナ作成

podman create --pod lemp-pod --name lemp-phpmyadmin \
  -e PMA_HOST="127.0.0.1" \
  -e APACHE_PORT=8080 \
  docker.io/library/phpmyadmin:latest

ファイル設定

PHP-FPMの呼び出し設定

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

仮ページの作成

<?php
    phpinfo();

コンテナの起動

podman pod start lemp-pod

PHP情報ページ(localhost:39080)

phpMyAdmin(localhost:39081)

コンテナ作成用スクリプト

#! /bin/bash

# ポッド、コンテナ名
PodName='lemp'
# webポート
WebPort='39080'
# phpMyAdminポート
PhpMyAdminPort='39081'

# 起動済みのポッド削除
echo ポッド削除
podman pod stop ${PodName}-pod
podman pod rm ${PodName}-pod

# ポッド作成
echo ポッド作成
podman pod create --name ${PodName}-pod -p ${WebPort}:80 -p ${PhpMyAdminPort}:8080
# nginx
podman create --pod ${PodName}-pod --name ${PodName}-nginx \
  -v /home/podman/${PodName}-pod/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /home/podman/${PodName}-pod/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro \
  -v /home/podman/${PodName}-pod/public:/usr/share/nginx/html \
  docker.io/library/nginx:latest
# php-fpm
podman create --pod ${PodName}-pod --name ${PodName}-phpfpm \
  -v /home/podman/${PodName}-pod/php/php.ini:/usr/local/etc/php/php.ini:ro \
  -v /home/podman/${PodName}-pod/public:/usr/share/nginx/html \
  php:fpm-alpine
# mariadb
podman create --pod ${PodName}-pod --name ${PodName}-db \
  --restart=unless-stopped \
  -e MARIADB_ROOT_PASSWORD="password" \
  -v /home/podman/lemp-pod/mariadb:/var/lib/mysql \
  docker.io/library/mariadb:latest
# phpMyAdmin
podman create --pod ${PodName}-pod --name ${PodName}-phpmyadmin \
  -e PMA_HOST="127.0.0.1" \
  -e APACHE_PORT=8080 \
  docker.io/library/phpmyadmin:latest

# ポッド起動
echo ポッド起動
podman pod start ${PodName}-pod

echo Finish!

コメント

タイトルとURLをコピーしました