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

執筆者:

関連記事

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

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

VirtualBoxにUbuntu18.04をインストール(SSH接続するまで)

2019年も変わらずLinuxディストリシェアトップをキープしたUbuntuをVirtualBoxでインストールします。 マイナビニュース  7 UsersDebianとCentOS下落- …

podmanをdockerとして使う

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

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

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

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

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

 

shingo.nakanishi
 

東京在勤、職歴2n年中年ITエンジニアです。まだ開発現場で頑張っています。

19歳(1996年)から書き始めたアウトプット用プライベートWeb日記数が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。

私と同じく、今後IT業界で生計を立てて行きたいと考えている方や、技術共有したいけど仲間が居なくて孤独、といった方と一緒に成長、知識共有して行けたら楽しいな、と思っています。