Podman Compose快速入门

安装podman-compose

复制代码
yum install -y podman-compose

创建项目php-nginx-mysql

复制代码
cd /
mkdir php-nginx-mysql

批量创建项目所需目录

复制代码
cd php-nginx-mysql
mkdir -p ./{www,php,mysql/{data,conf},nginx/conf.d}

增加compose.yaml文件,内容如下

复制代码
version: '3.8' #可省略‌版本号,省略则使用最新版本
services:
  nginx:
    image: nginx:1.30.2
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./www:/var/www/html
    depends_on:
      - php
    networks:
      - lnmp-network

  php:
    build: ./php
    image: php:8.2.31-fpm
    volumes:
      - ./www:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini
    environment:
      PHP_OPCACHE_ENABLE: "1"
    networks:
      - lnmp-network

  mysql:
    image: mysql:8.0.46
    environment:
      MYSQL_ROOT_PASSWORD: 123456 # 自己替换
      MYSQL_DATABASE: testdb
      MYSQL_USER: user                   # 自己替换
      MYSQL_PASSWORD: 123456      # 自己替换
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    networks:
      - lnmp-network


networks:
  lnmp-network:
    driver: bridge

说明

nginx/conf.d:nginx站点配置

mysql/data:MySQL数据持久化

mysql/conf:MySQL自定义配置

www:项目代码目录

增加php/Dockerfile文件,内容如下

复制代码
FROM php:8.2.31-fpm

# 安装 PHP 扩展
RUN docker-php-ext-install pdo_mysql mysqli php-mbstring php-gd php-zip php-xdebug php-bcmath

增加nginx/conf.d/default.conf文件,内容如下

复制代码
server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    #error_log  /var/log/nginx/error.log;
    #access_log /var/log/nginx/access.log;
    root /var/www/html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_pass php:9000; # 注意这里的端口号是 PHP 容器的默认端口号(9000)
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

增加www/index.php文件,内容如下

复制代码
<?php
echo date('Y-m-d') . '</br>';

echo 'podman-compose';

phpinfo();
?>

启动所有服务

复制代码
# 在 php-nginx-mysql 根目录下执行

podman-compose up
# 或者
podman-compose up -d

使用浏览器输入localhost或者本机IP回车即可看到index.php的内容

关闭由podman-compose up -d启动的容器组,主要使用两个命令。

你可以根据需求来选择:

🛑 主要关闭方式

  1. 停止并移除(最常用):podman-compose down
    这条命令会停止所有容器并彻底删除它们及相关网络,相当于启动的逆向操作,让项目环境恢复干净。
    · 常用命令:
    podman-compose down:标准清理,保留数据卷。
    podman-compose down -v:⚠️ 慎用,会删除数据库文件等所有数据。
    podman-compose down --rmi all:⚠️ 非常用,会一并删除所用镜像。
  2. 仅暂停(快速重启):podman-compose stop
    类似按下"暂停键",只停止容器但不会删除,下次用podman-compose start可直接恢复并保留数据。
  3. 前台终止(Ctrl+C)
    如果没用-d参数运行,在终端按Ctrl+C即可终止。但是注意,这通常也会停止并删除前台运行的容器。

🧹 清理数据

执行 down 后若仍有残留,可手动清理:

podman container prune:删除所有已停止容器。

podman volume prune:删除所有未使用的数据卷(⚠️ 会丢失数据!)。

podman image prune:删除未被使用的镜像。

你需要根据是想重启后保留数据,还是彻底清理环境来选择对应的命令。

查看容器状态

复制代码
podman-compose info

查看容器状态

复制代码
podman-compose ps

查看日志(如果出问题)

复制代码
podman-compose logs nginx
podman-compose logs php
podman-compose logs mysql

查看镜像

复制代码
podman-compose images

Podman镜像的保存位置取决于运行时的‌权限模式‌(Rootful 或 Rootless)

Root 模式‌(使用 sudo 或以 root 身份运行):默认保存在/var/lib/containers/storage

普通用户模式‌(Rootless,无 root 权限):默认保存在当前用户的家目录下,即$HOME/.local/share/containers/storage(例如/home/username/.local/share/containers/storage)。‌‌

你可以通过执行podman info命令,查看输出中的store.graphRoot字段来确认当前环境的具体存储路径 。

若需修改默认位置,可编辑配置文件~/.config/containers/storage.conf(普通用户)或/etc/containers/storage.conf(Root),并调整[storage]部分的graphroot参数 。‌‌