Docker问题:执行docker run后MySQL容器持续处于Exited状态
解决MySQL容器启动后立即退出的问题
你的Dockerfile里设置的环境变量不符合官方MySQL镜像的要求,这是容器启动失败的核心原因。官方MySQL镜像只识别特定的环境变量来完成初始化,你自定义的DB_HOST、DB_NAME这类变量镜像根本不会处理,而且关键的启动参数缺失。
修正后的Dockerfile
FROM mysql:latest # 官方MySQL镜像必填环境变量:root用户密码(必须设置,否则容器直接退出) ENV MYSQL_ROOT_PASSWORD=mm22 # 可选:容器启动时自动创建指定数据库,对应你原来的DB_NAME ENV MYSQL_DATABASE=productsdb # 你的自定义变量可保留,仅用于自身应用,MySQL镜像不会读取 ENV DB_HOST=localhost ENV DB_DIALECT=mysql ENV SERVER_PORT=5000 ENV DB_PORT=3306
关键说明
MYSQL_ROOT_PASSWORD是官方镜像启动的必填项,缺失会直接导致容器退出,这是你当前问题的主要诱因。MYSQL_DATABASE是可选参数,设置后容器启动阶段会自动创建该数据库,省去手动创建的步骤。- 你自定义的
DB_HOST、SERVER_PORT等变量可以保留,但仅对你自己的应用程序生效,MySQL镜像本身不会使用这些配置。
启动命令示例
构建镜像并启动容器:
docker build -t my-mysql . docker run -d -p 3306:3306 my-mysql
启动后可通过docker logs <容器ID>查看日志,确认容器是否正常运行。
内容的提问来源于stack exchange,提问作者marco22
相关产品推荐
相关产品推荐

