前回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さんありがとう。