linux 開発インフラ

podman + docker-comopseでwordpressを起動

投稿日:

前回podmanをdockerとして使えるようになりました。

結果、docker-composeが使えるようになったかどうかの動作確認として、定番のwordpress起動をしてみます。

検証環境

  • AlmaLinux 8.5
  • podman 3.3.1
  • docker-compose 1.29.2

構築イメージ

各種インストール

docker-composeインストール

docker公式サイトからdocker-composeのインストール方法を調べてインストールします。

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

バージョン確認。

# docker-compose --version
docker-compose version 1.29.2, build 5becea4c

$ which docker-compose
/usr/local/bin/docker-compose

podman-pluginインストール

docker-compose.ymlに書いたコンテナ名で通信を行う為に必要。これが無いとwordpressコンテナからdbコンテナに接続出来ず、wordpress初期画面で「Error establishing a database connection」が発生します。

# dnf install podman-plugins

    (中略)
パッケージのダウンロード:
(1/2): podman-plugins-3.3.1-9.module_el8.5.0+2586+018f24d7.x86_64.rpm                                                                                                                                                                                                                               6.1 MB/s | 3.1 MB     00:00
(2/2): podman-gvproxy-3.3.1-9.module_el8.5.0+2586+018f24d7.x86_64.rpm       

WordPressインストール、起動、ポート開放

Awesome ComposeサンプルからWordPress / MySQLを使わせて貰いました。

適当なディレクトリにgit cloneするなり、docker-compose.ymlをコピーするなりしておきます。

変更点は一行のみ、wordpressコンテナ内Apache(80ポート)に対応するホスト側ポートを、空いていた10081に指定しています。

services:
  db:
    # We use a mariadb image which supports both amd64 & arm64 architecture
    image: mariadb:10.6.4-focal
    # If you really want to use MySQL, uncomment the following line
    #image: mysql:8.0.27
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=somewordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress
    expose:
      - 3306
      - 33060
  wordpress:
    image: wordpress:latest
    ports:
      - 10081:80
    restart: always
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=wordpress
      - WORDPRESS_DB_NAME=wordpress
volumes:
  db_data:

上記docker-compose.ymlがあるディレクトリでdocker-compose起動。

# docker-compose up -d

    (中略)

Creating tmp_wordpress_1 ... done
Creating tmp_db_1        ... done

コンテナイメージがダウンロードされ、

# docker image ls
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
REPOSITORY                                                         TAG              IMAGE ID      CREATED      SIZE

    (中略)

docker.io/library/wordpress                                        latest           e3a452c0a154  2 weeks ago  629 MB
docker.io/library/mariadb                                          10.6.4-focal     12e05d5da3c5  7 weeks ago  416 MB

コンテナプロセスがしっかり起動しているようです。

# docker-compose ps
     Name                    Command               State       Ports
-------------------------------------------------------------------------
tmp_db_1          docker-entrypoint.sh --def ...   Up
tmp_wordpress_1   docker-entrypoint.sh apach ...   Up      :10081->80/tcp

ホスト側OSのfirewalldがある場合は、外部PCからアクセスできるようにホスト側の起動ポート(今回の場合は10081)を開放しておきます。

# firewall-cmd --add-port=10081/tcp --zone=public --permanent
success

# firewall-cmd --reload
success

準備が出来ました。

動作確認

http://192.168.0.3:10081にブラウザアクセス。

RHEL8系OSでもdocker-composeを使って一瞬でWordPressを起動することが出来ました。

まとめ

RHEL8系OSのpodmanでもdockerと同じようにdocker-composeが使えました。

ぶっちゃけ、podmanが出た時は「また新しいの覚えるのか・・・dockerに統一してほしいなぁ・・・(´Д`;)」と思っていました。

しかし、当のdockerはDocker Desktopを有料化したり、Docker社が事業売却してしまったり、Kubernetesがdockerを非推奨にしたりなど「荒波に揉まれまくってる感」を醸し出していますし、プロのインフラ屋さんなら兎も角、私みたいなプログラマが「実験や検証環境をサクッと作りたい」程度のニーズなら、dockerであろうがpodmanであろうが、composeさえ動いてくれれば事は足ります。

今となってはdocker代替としてpodmanが居てくれることに安心感すら感じています。

RedHatさんありがとう。

-linux, 開発インフラ
-, ,

執筆者:

関連記事

CentOSで暗号鍵用のパスワードを生成

そこそこ長くて文字種の入り混じった強度の高いものを自分で考えるのは面倒です。 暗号化処理を使う際に必要なパスワード文字列を、mkpasswdコマンドでいい感じに生成出来るようにしておきます。 目次1 …

Android版ChromiumをVirtualBoxにインストールしたUbuntuでビルドしてみる

「Chromium」はChromeの開発ソースが公開されたプロジェクトです。 www.chromium.org  1 UserGet the Code: Checkout, Build, & …

podmanをdockerとして使う

docker代替としてRHEL系OSにデフォルト搭載されたpodmanは当初、dockerを期待している他周辺ソフトウェア(docker-componseやgitlab-runnerなど)と素直に通信 …

認証付きHTTPプロキシを認証無しで利用する下位プロキシをsquidで構築

目次1 はじめに2 環境3 手順3.1 squidをインストール3.2 /etc/squid/squid.confを設定4 squid起動4.1 3128ポート開放4.2 各種端末で上記プロキシを設定 …

Linuxコマンドラインでfortuneを日本語翻訳してcowsayに日本語を喋らせる

緊張感が漂うことも多々あるIT開発現場、逼迫した状況が続く際は一服の潤いも必要です。以前、Linuxログインした時にcowsayにfotuneを喋らせる伝統芸能で嗜みました。 One IT Thing …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。