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

如何在Docker Compose中关联已存在的MariaDB而非创建新实例

如何让FileRun的Docker Compose使用现有MariaDB实例?

你现在的Docker Compose配置会自动创建一个新的MariaDB实例,但要改用你已经通过docker run启动的现有容器,只需要调整几个地方就行,我给你一步步讲清楚:

第一步:移除Compose里的内部DB服务

首先把原来配置里的db整个服务块删掉,因为我们不需要它了——我们要用自己已经跑起来的那个MariaDB容器。

第二步:调整Web服务的连接配置

接下来修改web服务的配置,去掉和内部DB相关的depends_on、links,然后添加环境变量来指定外部数据库的连接信息。同时要确保两个容器能互相访问(网络问题后面说)。

这里是修改后的完整Compose配置:

version: '2'
services:
  web:
    image: afian/filerun
    ports:
      - "80:80"
    volumes:
      - /filerun/html:/var/www/html
      - /filerun/user-files:/user-files
    environment:
      FR_DB_HOST: mariadb  # 这里用你现有MariaDB容器的名字,Docker同网络下可以直接用容器名访问
      FR_DB_PORT: 3306
      FR_DB_NAME: filerun  # 要提前在现有DB里创建好这个库
      FR_DB_USER: filerun  # 对应现有DB里的用户,要有该库的权限
      FR_DB_PASS: filerun
    # --- 网络配置(如果需要的话)---
    # 如果现有MariaDB不在默认网络,先创建一个外部网络:docker network create filenet
    # 把现有容器加入网络:docker network connect filenet mariadb
    # 然后取消下面的注释:
    # networks:
    #   - filenet
# networks:
#   filenet:
#     external: true

第三步:提前配置好现有MariaDB

在启动Compose之前,你需要在现有的MariaDB容器里创建好FileRun需要的数据库和用户:

  1. 先进入MariaDB容器:
docker exec -it mariadb mysql -u root -p

输入你启动容器时设置的root密码passwordhere。

  1. 执行下面的SQL命令来创建库和用户:
CREATE DATABASE IF NOT EXISTS filerun;
CREATE USER IF NOT EXISTS 'filerun'@'%' IDENTIFIED BY 'filerun';
GRANT ALL PRIVILEGES ON filerun.* TO 'filerun'@'%';
FLUSH PRIVILEGES;

关于网络的补充说明

如果你的现有MariaDB容器和Compose启动的web容器不在同一个Docker网络里,web服务会找不到mariadb这个主机名。这时候需要:

  1. 创建一个外部网络:docker network create filenet
  2. 把现有MariaDB容器加入这个网络:docker network connect filenet mariadb
  3. 然后打开Compose配置里的网络部分注释,让web服务也用这个网络。

这样调整之后,启动Compose的时候,FileRun的web容器就会连接到你已经存在的MariaDB实例了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:55:44