【发布时间】:2021-05-25 02:47:51
【问题描述】:
我目前正在使用 docker-compose 为开发目的设置一个 docker 容器组。
我有一个 web 容器、一个 mysql 容器和一个 phpmyadmin 容器。 我使用https://dockerfile.readthedocs.io/en/latest/content/DockerImages/dockerfiles/php-apache-dev.html 作为 web 容器,使用 mariadb:10 镜像作为 mysql 容器,phpmyadmin/phpmyadmin:latest 作为 phpmyadmin 镜像。
docker-compose.yml 文件如下所示:
version: '3'
services:
web:
container_name: web
restart: always
image: webdevops/php-apache-dev:7.4
user: application
environment:
- COMPOSER_VERSION=1
- WEB_ALIAS_DOMAIN=localhost
- WEB_DOCUMENT_ROOT=/app/pub
- PHP_DATE_TIMEZONE=EST
- PHP_DISPLAY_ERRORS=1
- PHP_MEMORY_LIMIT=2048M
- PHP_MAX_EXECUTION_TIME=300
- PHP_POST_MAX_SIZE=500M
- PHP_UPLOAD_MAX_FILESIZE=1024M
volumes:
- /projects/project-x:/app:cached
ports:
- '80:80'
- '443:443'
- '32823:22'
links:
- mysql
mysql:
container_name: mysql
restart: always
image: mariadb:10
ports:
- '3306:3306'
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=magento
volumes:
- db-data:/var/lib/mysql
phpmyadmin:
container_name: phpmyadmin
restart: always
image: phpmyadmin/phpmyadmin:latest
environment:
- MYSQL_ROOT_PASSWORD=root
- PMA_USER=root
- PMA_PASSWORD=root
ports:
- '8080:80'
links:
- mysql:db
depends_on:
- mysql
volumes:
db-data:
external: false
这很好用。但是,我的开发项目需要10.2-10.4版本的mariadb,以上都没有。标准的 mariadb:10 映像目前提供 10.5。
当我将image: mariadb:10 更改为image: mariadb:10.4 时,当我运行docker-compose up -d --build 时,容器会不断重启。
我在 https://hub.docker.com/_/mariadb 上检查了指针,但在使用 10.5 或 10.4 或 10.2 设置容器时找不到任何区别。
有什么想法吗?
编辑
我按照@xdhmoore 的建议将重新启动更改为“否”。 这是我从容器中获取的日志:
2021-02-22 20:34:56+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 1:10.4.17+maria~focal started.
2021-02-22 20:34:57+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2021-02-22 20:34:57+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 1:10.4.17+maria~focal started.
2021-02-22 20:34:57 0 [Note] mysqld (mysqld 10.4.17-MariaDB-1:10.4.17+maria~focal) starting as process 1 ...
2021-02-22 20:34:57 0 [Note] InnoDB: Using Linux native AIO
2021-02-22 20:34:57 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2021-02-22 20:34:57 0 [Note] InnoDB: Uses event mutexes
2021-02-22 20:34:57 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2021-02-22 20:34:57 0 [Note] InnoDB: Number of pools: 1
2021-02-22 20:34:57 0 [Note] InnoDB: Using SSE2 crc32 instructions
2021-02-22 20:34:57 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
2021-02-22 20:34:57 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
2021-02-22 20:34:57 0 [Note] InnoDB: Completed initialization of buffer pool
2021-02-22 20:34:57 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2021-02-22 20:34:57 0 [ERROR] InnoDB: Unsupported redo log format. The redo log was created with MariaDB 10.5.8.
2021-02-22 20:34:57 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2021-02-22 20:34:57 0 [Note] InnoDB: Starting shutdown...
2021-02-22 20:34:58 0 [ERROR] Plugin 'InnoDB' init function returned error.
2021-02-22 20:34:58 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2021-02-22 20:34:58 0 [Note] Plugin 'FEEDBACK' is disabled.
2021-02-22 20:34:58 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2021-02-22 20:34:58 0 [ERROR] Aborting
然后我用谷歌搜索了发生的第一个错误,发现:MYSQL 8.0 - unsupported redo log format
看来我需要删除 /var/lib/mysql/ 来解决我的问题。 但是,这是在我无法启动的 docker 容器内。另外,我每次启动时都会重建这个容器,所以我不知道如何清除这个目录?
【问题讨论】:
-
哦:但是,这是在我无法启动的 docker 容器中。 => 不,不是。
- db-data:/var/lib/mysql这是一卷。删除它,你就很好了。 -
你说得对,谢谢你的帮助。我跑了
docker volume ls然后docker volume rm <name-of-volume>并且有效。问题确实是日志文件夹最初是使用更高版本的 mariadb 创建的。 -
嘘!团队合作。
标签: docker docker-compose mariadb