docker-compose.ymlでまとめてコンテナ作成・起動・ネットワーク接続する方法
Podmanでコンテナを作成してネットワーク接続する際、Cockpit上やCUIで色々対応していたがこれが面倒くさい。調べたところ「docker-compose.yml」という設定ファイルを作成の上、コマンドを打てばその辺りをまとめて一括で対応してくれるらしい。以下に詳細をメモ。
目次
環境について
VPS
今回はKAGOYA CLOUD VPSのCPU1コア / メモリ1GBプランで作業した。SSH接続は公式案内の通り以下でログインできる。
- 接続ポート -> 22
- ユーザ名 -> root
- パスワード or 秘密鍵 -> インスタンス作成時に選択したもの
ホスト(VPS)側 AlmaLinux
詳細なバージョンは以下の通り。
# AlmaLinuxのバージョン確認 cat /etc/redhat-release # 実行結果 AlmaLinux release 8.10 (Cerulean Leopard)
対応方法
設定ファイル(docker-compose.yml)の作成
コメントを参考に以下内容のファイルを適当なディレクトリにアップロードする。尚、今回は「web-db-net」というネットワークを事前に作成していたが、事前に作成していない場合「external: true」は不要なので削除すること。
version: '3.8'
services:
# Webコンテナ用設定
web:
# コンテナ名
container_name: apache-php8.4-plus-1.4-container
# 使用するイメージ
image: apache-php8.4-plus-1.4
# ホスト再起動時にコンテナを自動起動
restart: always
# ポートマッピング
ports:
- "8080:80"
# ボリューム設定
volumes:
# マウントするディレクトリ
- ../podman_test_1:/var/www/html
# PHPとApacheの設定ファイル
- ./ymlファイルの設置ディレクトリを相対パス指定/custom-php.ini:/usr/local/etc/php/conf.d/custom-php.ini:ro
- ./ymlファイルの設置ディレクトリを相対パス指定/mpm_prefork.conf:/etc/apache2/mods-available/mpm_prefork.conf:ro
# ネットワーク設定
networks:
- web-db-net
deploy:
resources:
limits:
# 割り当てメモリ
memory: 384M
# DBコンテナ用設定
db:
# コンテナ名
container_name: mariadb-plus-1.0-container
# 使用するイメージ
image: mariadb:11.4
# ホスト再起動時にコンテナを自動起動
restart: always
# 環境変数
environment:
MARIADB_ROOT_PASSWORD: test_root_pass
MARIADB_DATABASE: test_database
MARIADB_USER: test_user
MARIADB_PASSWORD: test_user_pass
# ボリューム設定
volumes:
# データの永続化マウント
- ../../../lib/mariadb_data:/var/lib/mysql
# 設定ファイル
- ./ymlファイルの設置ディレクトリを相対パス指定/custom-mariadb.cnf:/etc/mysql/conf.d/custom-mariadb.cnf:ro
# ネットワーク設定
networks:
- web-db-net
deploy:
resources:
limits:
# 割り当てメモリ
memory: 256M
# ネットワーク設定
networks:
web-db-net:
# 作成済みのネットワークを使用
external: true
Docker Compose CLIプラグインの導入
私の環境だと以下コマンドを実行したところエラー。
# docker-compose.ymlを設置したディレクトリに移動 cd /【docker-compose.yml】を設置したディレクトリ/ # docker-compose.ymlで指定した内容を実行 podman compose up -d # エラーが出力 -bash: podman-compose: command not found
以下でもエラー。
# podman compose up -d
# 以下エラーが出力
Error: looking up compose provider failed
7 errors occurred:
* exec: "docker-compose": executable file not found in $PATH
* exec: "/root/.docker/cli-plugins/docker-compose": stat /root/.docker/cli-plugins/docker-compose: no such file or directory
* exec: "/usr/local/lib/docker/cli-plugins/docker-compose": stat /usr/local/lib/docker/cli-plugins/docker-compose: no such file or directory
* exec: "/usr/local/libexec/docker/cli-plugins/docker-compose": stat /usr/local/libexec/docker/cli-plugins/docker-compose: no such file or directory
* exec: "/usr/lib/docker/cli-plugins/docker-compose": stat /usr/lib/docker/cli-plugins/docker-compose: no such file or directory
* exec: "/usr/libexec/docker/cli-plugins/docker-compose": stat /usr/libexec/docker/cli-plugins/docker-compose: no such file or directory
* exec: "podman-compose": executable file not found in $PATH
そのため、まずは以下の通りDocker Compose CLIプラグインを導入する。
# Docker Composeプラグイン用ディレクトリを作成 mkdir -p /usr/libexec/docker/cli-plugins # Docker Composeバイナリをダウンロード curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/libexec/docker/cli-plugins/docker-compose # 実行権限を付与 chmod +x /usr/libexec/docker/cli-plugins/docker-compose
正常に導入できたら以下コマンドを実行する。
# docker-compose.ymlを設置したディレクトリに移動 cd /【docker-compose.yml】を設置したディレクトリ/ # docker-compose.ymlで指定した内容を実行 podman compose up -d
以上でコンテナが起動した筈。以下でコンテナ一覧とメモリ使用量が確認できる。
# コンテナ一覧を表示 podman ps # メモリ使用量 podman stats --no-stream
関連記事
-
-
Podmanで導入したデータベース(MariaDB)用コンテナのチューニングに関する設定方法
先日Podmanでデータベース(MariaDB)用コンテナを導入したが、当該コン ...
-
-
PodmanにComposerを導入し、パッケージをインストールする方法
先日Podmanで導入したapache-phpに各種PHPモジュールを追加したが ...
-
-
Podmanで導入したPHPの設定ファイル(php.ini)変更と高速化に関する設定方法
Podmanで導入したPHPの設定ファイル(php.ini)の内容を変更したい。 ...
-
-
Podmanで作成したApache用コンテナにドメインを割り当て、ポート指定なしでアクセス可能にする方法
先日PodmanでWebサーバ用コンテナを作成したが、ブラウザからアクセスする際 ...
-
-
Podmanで導入したApacheのチューニング(mpm_prefork)に関する設定方法
Podmanで導入したApacheのチューニング(mpm_prefork)を行い ...