[英]Why MySQL Container Keeps Restarting on Windows 10 Home with WSL 2?
I am trying to set up a Laravel development environment on my local machine, but my MySQL container keeps on restarting.我正在尝试在本地机器上设置 Laravel 开发环境,但我的 MySQL 容器不断重新启动。
Using: Windows 10 Home with WSL2 and Docker Desktop使用:带有 WSL2 和 Docker 桌面的 Windows 10 Home
docker-compose.yml docker-compose.yml
version: '3'
networks:
laravel:
services:
web:
image: nginx:stable-alpine
container_name: nginx
ports:
- "80:80"
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- phpfpm
- db
networks:
- laravel
db:
image: mysql:8.0.22
container_name: mysql
restart: always
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
networks:
- laravel
phpfpm:
build:
context: .
dockerfile: Dockerfile
container_name: phpfpm
volumes:
- ./src:/var/www/html
ports:
- "9000:9000"
networks:
- laravel
phpmyadmin:
image: phpmyadmin:5-fpm-alpine
container_name: phpmyadmin
restart: always
ports:
- 8080:80
environment:
- PMA_ARBITRARY=1
networks:
- laravel
Dockerfile文件
FROM php:7.2-fpm-alpine
RUN docker-php-ext-install pdo pdo_mysql
Nginx (default.conf) Nginx (default.conf)
server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/laravelapp/public;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# Source: https://serverfault.com/questions/935096/docker-nginx-php-fpm-error-emerg-11-host-not-found-in-upstream
resolver 127.0.0.11; # docker's internal fixed IP address
set $upstream phpfpm:9000;
# nginx will now start if host is not reachable
fastcgi_pass $upstream;
# Source End
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
# gzip_static on;
}
}
docker-compose ps
or docker deskop
shows that mysql
container status as restarting
. docker-compose ps
或docker deskop
显示, mysql
作为容器的状态restarting
。
It restarts once in a while, but stops again.它偶尔会重新启动,但会再次停止。 It seems like something is terribly wrong when I look at the log file, but I couldn't make sense.
当我查看日志文件时,似乎有些事情非常糟糕,但我无法理解。
mysql
container log mysql
容器日志
2020-11-07 17:09:27+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.22-1debian10 started.
2020-11-07 17:09:28+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-11-07 17:09:28+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.22-1debian10 started.
2020-11-07T17:09:28.627271Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.22) starting as process 1
2020-11-07T17:09:28.634780Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2020-11-07T17:09:28.654292Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-11-07T17:09:30.967703Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
mysqld: Table 'mysql.plugin' doesn't exist
2020-11-07T17:09:31.108803Z 0 [ERROR] [MY-010735] [Server] Could not open the mysql.plugin table. Please perform the MySQL upgrade procedure.
2020-11-07T17:09:31.187838Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2020-11-07T17:09:31.251299Z 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-11-07T17:09:31.304178Z 0 [Warning] [MY-000054] [Server] World-writable config file './auto.cnf' is ignored.
2020-11-07T17:09:31.305509Z 0 [Warning] [MY-010107] [Server] World-writable config file './auto.cnf' has been removed.
2020-11-07T17:09:31.306123Z 0 [Warning] [MY-010075] [Server] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 00514c52-211c-11eb-bbbd-0242ac170002.
2020-11-07T17:09:31.415490Z 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-11-07T17:09:31.439838Z 0 [Warning] [MY-013595] [Server] Failed to initialize TLS for channel: mysql_main. See below for the description of exact issue.
2020-11-07T17:09:31.440013Z 0 [Warning] [MY-010069] [Server] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2020-11-07T17:09:31.444031Z 0 [Warning] [MY-010284] [Server] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
2020-11-07T17:09:31.445904Z 0 [Warning] [MY-010284] [Server] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
2020-11-07T17:09:31.520973Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2020-11-07T17:09:31.521733Z 0 [Warning] [MY-010441] [Server] Failed to open optimizer cost constant tables
2020-11-07T17:09:31.522162Z 0 [ERROR] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we're sending the information to the error-log instead: MY-001146 - Table 'mysql.component' doesn't exist
2020-11-07T17:09:31.522393Z 0 [Warning] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we're sending the information to the error-log instead: MY-003543 - The mysql.component table is missing or has an incorrect definition.
2020-11-07T17:09:31.523156Z 0 [ERROR] [MY-010326] [Server] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2020-11-07T17:09:31.523377Z 0 [ERROR] [MY-010952] [Server] The privilege system failed to initialize correctly. For complete instructions on how to upgrade MySQL to a new version please see the 'Upgrading MySQL' section from the MySQL manual.
2020-11-07T17:09:31.523987Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-11-07T17:09:32.995214Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.22) MySQL Community Server - GPL.
Instead of mapped volumes for data persistence, I used the managed volume and it is not crashing anymore我使用了托管卷,而不是用于数据持久性的映射卷,它不再崩溃
Previous以前的
db:
image: mysql:8.0.22
container_name: mysql
restart: always
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
networks:
- laravel
Now现在
db:
image: mysql:8.0.22
container_name: mysql
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
networks:
- laravel
volumes:
db_data: {}
I posted that question when I was starting with docker... After some research, I found out that the main culprit is that the different Linux distro used different user id for the same user name.我在开始使用 docker 时发布了这个问题......经过一些研究,我发现罪魁祸首是不同的 Linux 发行版对相同的用户名使用了不同的用户 ID。 So basically the permissions problem.
所以基本上是权限问题。
Please read this article if that makes sense to you... https://medium.com/swlh/wordpress-deployment-with-nginx-php-fpm-and-mariadb-using-docker-compose-55f59e5c1a如果这对您有意义,请阅读这篇文章... https://medium.com/swlh/wordpress-deployment-with-nginx-php-fpm-and-mariadb-using-docker-compose-55f59e5c1a
I have to remove the current user from ubuntu and add the user that matches the alpine user.我必须从 ubuntu 中删除当前用户并添加与 alpine 用户匹配的用户。 That's the distro I was using at that time.
那是我当时使用的发行版。
Probably that's the gotcha I think... if you are using ubuntu and using docker image of alpine Linux... then the user name and user id may vary...可能这就是我认为的问题……如果您使用的是 ubuntu 并使用 alpine Linux 的 docker 映像……那么用户名和用户 ID 可能会有所不同……
The article I have referenced shows how to remove users from your current Linux distro and add the same user with a different user id.我参考的文章展示了如何从您当前的 Linux 发行版中删除用户并添加具有不同用户 ID 的相同用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.