我几乎无法解释发生了什么,但请检查一下...我在这里使用 Docker 以及 MySQL、PHP 和 apache2。
如果我像这样立即启动一切,那就会有所不同:
docker-compose up mysql apache2
或者如果我决定首先在终端窗口中仅启动 mysql,如下所示:
docker-compose up mysql
并在单独的终端窗口 apache2 中:
docker-compose up apache2
如果我一次全部启动,会发生很多次,最终会出现以下错误:
Missing Tablespace
有时使用会有帮助
docker-compose down
接着是另一个
docker-compose up mysql apache2
但大多数时候错误是一致的。我可以通过在单独的窗口中启动系统(首先是 mysql)来始终避免此错误 - 一旦它启动,我就启动 apache2。
这怎么可能是一回事?我没有足够的 Docker 知识来理解此类问题,但我愿意。在我看来,在实际应用程序收到请求之前,apache 不应该与 MySQL 通信?
非常感谢任何建议 - 如果需要更多信息,请告诉我。
docker-compse.yaml 中有一个名为
depends_on
的选项来定义启动服务的要求顺序:
version: '3.4'
services:
mysql:
image: mysql:5.6
apache2:
image: httpd:alpine
depends_on:
- mysql
然后,您应该使用
docker-compose up
来启动两者。