【问题标题】:Docker-compose's mariadb cannot reboot after change (exit code 1)Docker-compose 的 mariadb 更改后无法重新启动(退出代码 1)
【发布时间】:2021-09-10 02:44:42
【问题描述】:

我正在用这个 github 学习 docker-compose。
https://github.com/lusehair/42inception.git

(在 Ubuntu 下运行良好。想运行时请在 Ubuntu 下运行!)
首先,它运作良好。
但是如果我编辑一个页面并重新启动,就会出现错误。
docker-compose down 在其他终端,sudo systemctl stop mysql 关闭 mysql。)
:我认为sudo systemctl stop mysql 可以停止我的mariadb 服务。但如果不是,请在评论中告诉我。

srcs_mariadb_1 exited with code 1
srcs_mariadb_1 exited with code 1
srcs_mariadb_1 exited with code 1
srcs_mariadb_1 exited with code 1
...

我认为这是因为 ~/data/ 文件夹没有很好地删除。
但我不想删除数据文件夹。
如果我重新启动 docker-compose,甚至 Ubuntu,我想保持 wp 更改!

编辑:评论中的事情
问:为什么我只在 Ubuntu 中运行我的 docker-compose 程序?
A. 我知道仅在 Ubuntu 操作系统中启动 docker 是合乎逻辑的问题。但我这样说有两个原因。首先,我的一些命令应该在 linux os 中启动。其次,我的主题要求我在虚拟机中启动我的 docker-compose 项目。我为此选择了 Ubuntu。

我还尝试更具体地进行调试,如下所示。
开始之前(基本):
: 在根目录运行make
它会清理 docker 和数据文件夹、设置和构建。

  • docker-compose up mariadb
    恐怕为什么这行得通...
kkim@kkim-VirtualBox:~/inception/lusehair/srcs$ docker-compose up mariadb
Creating network "srcs_vpcbr" with driver "bridge"
Creating srcs_mariadb_1 ... done
Attaching to srcs_mariadb_1
mariadb_1    | 2021-06-27 17:18:52 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
kkim@kkim-VirtualBox:~/inception/lusehair/srcs$
  • docker-compose up wordpress
    我在docker-compose up mariadb 成功后尝试过。
    这给了我问题。
    这与其他错误有所不同。
    它一直试图连接几分钟。我几乎在 10 分钟后停止了这个。
kkim@kkim-VirtualBox:~/inception/lusehair/srcs$ docker-compose up wordpress
srcs_mariadb_1 is up-to-date
Creating srcs_wordpress_1 ... done
Attaching to srcs_wordpress_1
^CGracefully stopping... (press Ctrl+C again to force)
Stopping srcs_wordpress_1 ... done
  • docker-compose up mariadb wordpress
    它像往常一样给了我错误.. :(
kkim@kkim-VirtualBox:~/inception/lusehair/srcs$ docker-compose up mariadb wordpress
srcs_mariadb_1 is up-to-date
Starting srcs_wordpress_1 ... done
Attaching to srcs_mariadb_1, srcs_wordpress_1
mariadb_1    | 2021-06-27 17:18:52 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1    | 2021-06-27 17:18:56 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1    | 2021-06-27 17:18:59 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1    | 2021-06-27 17:19:02 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1    | 2021-06-27 17:19:06 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1    | 2021-06-27 17:19:11 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1    | 2021-06-27 17:19:17 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 7 ...
mariadb_1    | 2021-06-27 17:19:26 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1    | 2021-06-27 17:19:41 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1    | 2021-06-27 17:20:10 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1    | 2021-06-27 17:21:04 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1    | 2021-06-27 17:22:06 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1    | 2021-06-27 17:23:09 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1    | 2021-06-27 17:24:12 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 7 ...
mariadb_1    | 2021-06-27 17:25:15 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1    | 2021-06-27 17:26:18 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
srcs_mariadb_1 exited with code 1
mariadb_1    | 2021-06-27 17:28:24 0 [Note] mysqld (mysqld 10.3.29-MariaDB-0+deb10u1) starting as process 7 ...
^CGracefully stopping... (press Ctrl+C again to force)
Stopping srcs_wordpress_1 ... done
Stopping srcs_mariadb_1   ... done

感谢您在此之前阅读。
我已连接到 git 存储库的所有者,但它在他的 ubuntu 中运行良好。
我会尝试重新安装我的操作系统并在这个问题中写道。

如果我误解了什么,请告诉我!!!
我想我是,但我不知道重点。

这是 docker-compose.yml。
它仅使用本地映像 (Dockerfile)。

# docker-compose.yml
version: '3'
services:
    mariadb:
        image: mariadb:inc
        volumes:
            - ~/data/maria:/var/lib/mysql
        restart: always
        environment:
            MARIA_LOGIN: "${MARIA_LOGIN}"
            MARIA_PASS: "${MARIA_PASS}"
        ports: 
            - "3306:3306"
        build:
            context: ./requirements/mariadb
            dockerfile: Dockerfile 
        networks:
            vpcbr:
        env_file: .env
               

    wordpress:
        depends_on:
            - mariadb
        image: wordpress:inc
        volumes:
            - ~/data/wp:/var/www/wordpress
        restart: always
        environment:
            WP_LOGIN: "${WP_LOGIN}"
            WP_PASS: "${WP_PASS}"
            WPU_1LOGIN: "${WPU_1LOGIN}"
            WPU_1PASS: "${WPU_1PASS}"
            MARIA_LOGIN: "${MARIA_LOGIN}"
            MARIA_PASS: "${MARIA_PASS}"
        ports:
            - "9000:9000"
        build:
            context: ./requirements/wordpress
            dockerfile: Dockerfile
        networks:
            vpcbr:
        env_file: .env
    nginx:
        image: nginx:inc
        restart: always
        depends_on:
            - wordpress
        ports:
             - "443:443"
        volumes:
            - ~/data/wp:/var/www/wordpress
        build:
            context: ./requirements/nginx
            dockerfile: Dockerfile
        networks:
            vpcbr:
        extra_hosts:
            - "lusehair.42.fr:127.0.0.1"
        env_file: .env

networks:
    vpcbr:
        driver: bridge

这是 Mariadb 的 Dockerfile,setup.sh。
您可以在 github 中查看所有项目文件。
FROM debian:buster 

MAINTAINER lusehair <lusehair@42.student.fr>

RUN apt-get update
RUN apt-get install -y mariadb-server vim procps; 

COPY tools/setup.sh . 
RUN chmod +x setup.sh 

EXPOSE 3306
RUN rm /etc/mysql/mariadb.conf.d/50-server.cnf 
# Swith off the bind address 
COPY tools/50-server.cnf /etc/mysql/mariadb.conf.d 
ENTRYPOINT ["sh", "/setup.sh"]
if [ ! -d "/var/lib/mysql/wordpress" ]; then 
    
    mysql_install_db
    service mysql start
    
    mysql -e "CREATE USER '${MARIA_LOGIN}'@'localhost' identified by '${MARIA_PASS}';" &&\
    mysql -e "CREATE DATABASE IF NOT EXISTS wordpress;" &&\
    mysql -e "GRANT ALL PRIVILEGES ON *.* TO '${MARIA_LOGIN}'@'%' IDENTIFIED BY '${MARIA_PASS}';" &&\
    mysql -e "FLUSH PRIVILEGES;"
    service mysql stop 
fi
#sleep 5
mysqld

【问题讨论】:

  • 1) 停止本地 mysql 服务与 docker-compose 中的 mariadb 容器服务有什么关系? 2) 为什么我们必须在 ubuntu 的 docker install 中启动这些 compose 服务? docker 的一点是在任何有 docker 引擎可用的地方启动这些服务。 3)最重要的是:您的确切问题是什么?如果您希望我们猜测您所做的更改以及失败的 mariadb 容器日志中显示的错误,我很确定这里没有人有超能力。请edit your question提供调试详情
  • @Zeitounator 1) 我认为sudo systemctl stop mysql 也可以关闭mariadb。但是,如果错了,请告诉我! 2) 我知道仅在 Ubuntu 操作系统中启动 docker 是合乎逻辑的问题。但我这样说有两个原因。首先,我的一些命令可以在 linux 操作系统中启动。其次,我的主题要求我在虚拟机中启动我的 docker-compose 项目。我为此选择了 Ubuntu。 3)我想知道它为什么在终端停止,但它只给了我“srcs_mariadb_1 exited with code 1”。您能告诉我还有其他更具体的调试方法吗?
  • Can you tell me that is there any other ways to debug more specifically? => docker-compose up mariadb
  • @Zeitounator 正如你所说,我编辑了我的问题!总结,docker-compose up mariadb 运行良好(我不知道为什么)。但成功后,docker-compose up wordpress(取决于 mariadb)给了我新的错误。而docker-compose up mariadb wordpress 照常发生错误。 ??????

标签: mysql docker docker-compose mariadb reboot


【解决方案1】:

您应该不需要公开 3306 端口。

您的setup.sh 创建了一个与它授予权限的用户不同的用户。容器不适合运行服务。

有一个使用官方图片的好案例。

version: '3'
services:
    mariadb:
        image: mariadb:10.5.11
        volumes:
            - ~/data/maria:/var/lib/mysql
        restart: always
        environment:
            MARIADB_USER: "${MARIA_LOGIN}"
            MARIADB_PASSWORD: "${MARIA_PASS}"
            MARIADB_DATABASE: wordpress

但是不要遇到太多错误/学习的东西 :-)

从您的存储库看来,您也解决了其余问题(包括官方图片的 wordpress)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多