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

docker run转docker-compose后osticket容器无法运行问题排查

问题原因与解决办法

核心问题1:数据库主机名配置错误

在docker run命令中,你通过--link osticket_mysql:mysql将数据库容器映射为mysql主机名,osTicket容器可通过mysql访问数据库;但在docker-compose配置里,你把MYSQL_HOST设为localhost——容器内的localhost指向自身,而非db容器,直接导致osTicket无法连接到数据库。

核心问题2(次要):镜像不一致

docker run使用的是mariadb镜像,而docker-compose用的是mysql镜像,虽然两者兼容,但保持镜像一致可避免潜在的适配问题。

修正后的docker-compose.yaml配置

version: '3.8'
services:
  osticket:
    container_name: osticket-web
    image: osticket/osticket
    environment:
      MYSQL_HOST: db  # 修改为docker-compose中数据库服务的名称db
      MYSQL_USER: osticket
      MYSQL_PASSWORD: secret
      MYSQL_DATABASE: osticket  # 补充原配置缺失的数据库名参数
    depends_on:
      - db
    ports:
      - 8080:80
  db:
    container_name: osticket-db
    image: mariadb  # 改为与docker-run一致的mariadb镜像
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: osticket
      MYSQL_USER: osticket
      MYSQL_PASSWORD: secret

额外注意事项

  • depends_on仅保证容器启动顺序,不保证数据库服务完全就绪。不过osTicket官方镜像自带数据库连接等待逻辑,修正主机名后通常能正常连接。
  • 原配置中的‘3.8’是中文引号,会导致docker-compose解析错误,需改为英文单引号'3.8'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:45:48