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

執筆者:

関連記事

CentOS8をVirtualBoxにインストールしてXからdnfを打つまで

2019年9月24日(米時間)CentOS8がリリースされました。 RHEL8リリースから4か月、まだかまだかとリリース進捗を眺めていた方も多かったのではないでしょうか。 「時間が出来たら入れてみよう …

podmanとNode.js公式コンテナイメージでnodeコマンドを使う

REHL8(CentOS8)からデフォルトインストールされるようになったpodmanでnodeコマンドが使える環境を作ってみます。 目次1 環境2 やること3 Node.jsイメージの導入4 コンテナ …

Linuxのシェルログイン時、cowsayに格言を喋らせる伝統芸能

sshコマンドやteratermでLinuxにログインした時、在り来たりなプロンプトじゃなくて何か役に立つ情報が表示されたら、開発プロジェクトの雰囲気もちょっと潤うかも知れません。 Linuxコマンド …

CentOS8にPostgreSQL12をインストールする手順

以前CentOS7にPostgreSQL11をインストールしてSQL実行しました。 One IT Thing  1 Pocket開発用PostgreSQLをCentOSにインストールしてSQ …

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

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

 

shingo.nakanishi
 

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