You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose重复运行仅重建Selenium而非PostgreSQL的问题

解决Docker Compose重复重建Selenium服务的问题

问题原因

PostgreSQL官方镜像内置了VOLUME /var/lib/postgresql/data声明,Docker Compose会自动为这个目录创建匿名卷并关联容器,哪怕容器停止,卷和容器实例都会被保留,所以第二次执行docker compose up时会直接复用现有容器。而Selenium官方镜像没有定义任何持久化卷,默认情况下,当容器停止后,Compose没有关联的持久化资源可识别,会判定需要重建容器。

解决方案

你可以通过以下两种方式让Selenium服务和PostgreSQL一样被Compose复用:

1. 添加持久化卷

在Selenium服务中挂载一个命名卷(即使挂载到容器内无关紧要的目录),让Compose为其维护容器关联状态:

services:
  database:
    image: postgres:15-alpine
    # 补充你的数据库配置(如环境变量、端口映射等)
  selenium:
    image: selenium/standalone-firefox:4.8.1-20230306
    shm_size: 2gb
    volumes:
      - selenium_temp:/tmp/selenium  # 挂载到容器内临时目录,仅用于关联状态

volumes:
  selenium_temp:  # 定义命名卷

2. 配置重启策略

给Selenium服务添加restart: unless-stopped,确保容器停止后不会被自动清理,下次up时直接启动现有容器:

services:
  selenium:
    image: selenium/standalone-firefox:4.8.1-20230306
    shm_size: 2gb
    restart: unless-stopped

额外提示

如果需要执行一次性命令,优先使用docker compose exec selenium <命令>进入已运行的Selenium容器,而不是docker compose run——后者会创建全新的临时容器,不会复用现有服务实例。

内容的提问来源于stack exchange,提问作者Falc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:37:30