DVWA Docker多架构支持:amd64/arm64镜像构建教程

DVWA Docker多架构支持:amd64/arm64镜像构建教程

【免费下载链接】DVWA 【免费下载链接】DVWA 项目地址: https://gitcode.com/gh_mirrors/dvw/DVWA

为什么需要多架构支持?

随着Apple Silicon芯片和ARM服务器的普及,安全测试工具需要跨架构运行能力。DVWA作为Web安全学习的经典靶场,通过Docker多架构镜像可以让开发者在x86服务器、M1/M2 Mac或ARM开发板上获得一致的漏洞测试体验。

准备工作

环境要求

  • Docker Engine 20.10+
  • Docker Compose v2+
  • Git

获取源码

git clone https://gitcode.com/gh_mirrors/dvw/DVWA
cd DVWA

原Dockerfile架构分析

查看项目根目录的Dockerfile,当前基础镜像使用单一架构:

FROM docker.io/library/php:8-apache

这种配置只能构建amd64架构镜像,在ARM设备上会出现"exec format error"。

多架构构建方案

1. 修改Dockerfile

使用Docker Manifest List特性,创建支持多架构的构建文件:

# 多架构构建基础镜像
ARG TARGETARCH
FROM docker.io/library/php:8-apache-${TARGETARCH}

LABEL org.opencontainers.image.source=https://gitcode.com/gh_mirrors/dvw/DVWA
LABEL org.opencontainers.image.description="DVWA multi-architecture image"
LABEL org.opencontainers.image.licenses="gpl-3.0"

WORKDIR /var/www/html

# 架构适配的依赖安装
RUN apt-get update \
 && export DEBIAN_FRONTEND=noninteractive \
 && apt-get install -y zlib1g-dev libpng-dev libjpeg-dev libfreetype6-dev iputils-ping \
 && apt-get clean -y && rm -rf /var/lib/apt/lists/* \
 && docker-php-ext-configure gd --with-jpeg --with-freetype \
 && docker-php-ext-install gd mysqli pdo pdo_mysql

COPY --chown=www-data:www-data . .
COPY --chown=www-data:www-data config/config.inc.php.dist config/config.inc.php

2. 配置构建器

# 创建多架构构建器
docker buildx create --name dvwa-builder --use
# 启动构建器
docker buildx inspect --bootstrap

3. 构建多架构镜像

# 构建并推送到本地仓库
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t dvwa:multiarch \
  --load .

Docker Compose部署

修改compose.yml文件支持多架构部署:

volumes:
  dvwa:

networks:
  dvwa:

services:
  dvwa:
    build:
      context: .
      platforms:
        - linux/amd64
        - linux/arm64
    image: dvwa:multiarch
    pull_policy: never  # 使用本地构建镜像
    environment:
      - DB_SERVER=db
    depends_on:
      - db
    networks:
      - dvwa
    ports:
      - 127.0.0.1:4280:80
    restart: unless-stopped

  db:
    image: docker.io/library/mariadb:10
    # 数据库也使用多架构镜像
    platform: ${TARGETPLATFORM:-linux/amd64}
    environment:
      - MYSQL_ROOT_PASSWORD=dvwa
      - MYSQL_DATABASE=dvwa
      - MYSQL_USER=dvwa
      - MYSQL_PASSWORD=p@ssw0rd
    volumes:
      - dvwa:/var/lib/mysql
    networks:
      - dvwa
    restart: unless-stopped

验证架构支持

启动服务后验证架构信息:

# 启动服务
docker compose up -d

# 检查容器架构
docker inspect dvwa-dvwa-1 | grep Architecture

正确输出应为:

"Architecture": "amd64"  # 或 "arm64"

常见问题解决

1. ARM架构下GD库安装失败

修改Dockerfile中依赖安装部分,ARM架构需要额外处理:

# ARM架构特殊处理
RUN if [ "${TARGETARCH}" = "arm64" ]; then \
      apt-get install -y libjpeg62-turbo-dev; \
    fi

2. 数据库连接问题

确保config/config.inc.php中的数据库配置与compose环境变量匹配:

$_DVWA['db_server'] = getenv('DB_SERVER') ?: 'localhost';
$_DVWA['db_database'] = 'dvwa';
$_DVWA['db_user'] = 'dvwa';
$_DVWA['db_password'] = 'p@ssw0rd';

总结

通过Docker Buildx和多架构基础镜像,我们实现了DVWA在amd64和arm64架构的无缝支持。这种方案可以扩展到更多架构(如ppc64le、s390x),满足不同安全测试环境的部署需求。完整配置文件可参考项目docker-compose.ymlDockerfile

下一步

  • 测试在树莓派4B(arm64)上的性能表现
  • 添加linux/arm/v7架构支持
  • 实现CI/CD自动构建多架构镜像

【免费下载链接】DVWA 【免费下载链接】DVWA 项目地址: https://gitcode.com/gh_mirrors/dvw/DVWA

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值