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, 開発インフラ
-, ,

執筆者:

関連記事

Termuxで動作が確認できたターミナルゲーム4つ

Android端末をroot化せずにLinux環境を独自構築する神アプリ「Termux」。 play.google.comhttps://play.google.com/store/apps/deta …

pgadmin4をCentOS7にインストールしてサーバモードで起動する手順

目次1 はじめに1.1 pgadmin3時代1.2 pgadmin4時代2 前提3 環境4 手順4.1 1.yumリポジトリ追加。pgdg(ポスグレ本家)、epel(python関連用)4.2 2.p …

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

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

GitLabのIPを変更したらMattermostにログイン出来なくなった話「the redirect uri included is not valid. 」

目次1 発端2 環境3 GitLabのIP変更設定を開始4 そしてハマる5 解決6 結局どこに設定が保存されていたか7 まとめ 発端 先日オフィスの引っ越しが有りネットワークセグメントが変わる為、Gi …

各種OSでのインデックスを使用した高速ファイル名検索と全文検索【Linux編】

目次1 目的2 環境3 使用コマンド4 ファイル名検索5 全文検索6 補足とインデックス更新7 まとめ 目的 CentOS上に存在する全ての「~.java」ファイルをリストアップします。上記の内「Sy …

 

shingo.nakanishi
 

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