如何通过docker-compose扩展Webdevops镜像并集成base-app?
如何基于webdevops/base-app扩展你的镜像
你当前的docker-compose配置里把webdevops/base-app作为独立服务运行,这其实没有真正实现“扩展镜像”的目的——base-app是一个基础镜像层,应该用来构建你自己的自定义镜像,而不是单独启动容器。下面是正确的集成步骤:
1. 编写自定义Dockerfile
创建一个Dockerfile文件,以webdevops/base-app为基础,添加你需要的环境组件(比如PHP、Apache,或者直接复用原有php-apache-dev的特性):
选项A:从base-app从头构建PHP-Apache环境
如果你需要完全自定义环境,用这个Dockerfile:
# 基于webdevops/base-app基础镜像 FROM webdevops/base-app:latest # 使用webdevops封装的apt-install命令安装依赖(base-app内置该命令,简化包管理) RUN apt-install apache2 php7.2 libapache2-mod-php7.2 php7.2-mysql # 启用Apache必要模块 RUN a2enmod rewrite php7.2 # 配置Apache文档根目录指向/app RUN echo "<VirtualHost *:80>\n DocumentRoot /app\n <Directory /app>\n AllowOverride All\n Require all granted\n </Directory>\n</VirtualHost>" > /etc/apache2/sites-available/000-default.conf # 设置工作目录 WORKDIR /app # 用supervisord管理Apache进程(webdevops镜像默认使用supervisord) CMD ["supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]
选项B:基于现有php-apache-dev扩展(推荐)
如果你想保留webdevops/php-apache-dev:7.2的所有特性,同时基于base-app的底层能力扩展,直接以php-apache-dev为基础即可(因为它本身已经继承自base-app):
FROM webdevops/php-apache-dev:7.2 # 在这里添加你的自定义操作,比如安装额外依赖、复制配置文件 RUN apt-install php7.2-redis COPY ./custom-php.ini /etc/php/7.2/apache2/conf.d/99-custom.ini
2. 修改docker-compose.yml
移除多余的base-app服务,将apache服务的image替换为build指令,指向Dockerfile所在目录:
version: "3" services: apache: # 构建自定义镜像,上下文为当前目录(即Dockerfile所在目录) build: . container_name: apache restart: always ports: - '80:80' - '443:443' depends_on: - mysql volumes: - "./:/app" environment: - XDEBUG_MODE=develop,debug - XDEBUG_CLIENT_HOST=host.docker.internal - XDEBUG_CLIENT_PORT=9003 # 9000=xdebug v2, 9003=v3 - XDEBUG_REMOTE_CONNECT_BACK=0 - XDEBUG_REMOTE_AUTOSTART=1 - XDEBUG_IDE_KEY=docker - XDEBUG_START_WITH_REQUEST=trigger extra_hosts: - "host.docker.internal:host-gateway" mysql: image: "mysql:latest" restart: always container_name: mysql ports: - '3306:3306' volumes: - './mysql:/var/lib/mysql' environment: MYSQL_ROOT_PASSWORD: 'xxxxx'
3. 构建并启动容器
执行以下命令构建自定义镜像并启动服务:
# 构建镜像 docker-compose build apache # 启动所有服务 docker-compose up -d
关键说明
webdevops/base-app是所有webdevops应用镜像的底层基础,提供了统一的系统配置、进程管理(supervisord)等能力,不需要单独作为服务运行。- 如果你只是需要复用base-app的环境变量或配置,也可以通过挂载文件共享,但构建自定义镜像才是最规范的扩展方式。
内容的提问来源于stack exchange,提问作者ekelmann
相关产品推荐
相关产品推荐

