首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么MySQL容器继续用WSL 2在Windows10Home上重新启动?

为什么MySQL容器继续用WSL 2在Windows10Home上重新启动?
EN

Stack Overflow用户
提问于 2020-11-07 17:47:12
回答 2查看 2.6K关注 0票数 2

我试图在我的本地机器上设置一个Laravel开发环境,但是我的MySQL容器继续重新启动。

使用: Windows 10 HomewithWSL2和Desktop

docker-compose.yml

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
FROM php:7.2-fpm-alpine

RUN docker-php-ext-install pdo pdo_mysql

Nginx (default.conf)

代码语言:javascript
运行
复制
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 psdocker deskopmysql容器状态显示为restarting

它偶尔会重新启动,但会再次停止。当我查看日志文件时,似乎有些事情是非常不对劲的,但我无法理解。

mysql 容器日志

代码语言:javascript
运行
复制
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.
EN

回答 2

Stack Overflow用户

发布于 2020-11-09 16:31:45

我使用托管卷来代替数据持久化的映射卷,而且它不再崩溃。

以前的

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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: {}
票数 5
EN

Stack Overflow用户

发布于 2021-03-06 17:39:31

我从码头开始的时候发布了这个问题..。经过一些研究,我发现主要的罪魁祸首是不同的Linux发行版对同一个用户名使用不同的用户id。基本上是权限问题。

如果这篇文章对你有意义,请读这篇文章..。https://medium.com/swlh/wordpress-deployment-with-nginx-php-fpm-and-mariadb-using-docker-compose-55f59e5c1a

我必须从ubuntu中删除当前用户,并添加与高寒用户匹配的用户。那是我当时使用的发行版。

也许这就是我想的..。如果您使用的是ubuntu和高寒Linux的docker映像.那么用户名和用户id可能会有所不同..。

我参考的这篇文章展示了如何从当前的Linux发行版中删除用户,并使用不同的用户id添加相同的用户。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64730673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档