mysql 由于未知问题,无法在Docker Compose安装上登录自托管的Pydio Cells

li9yvcax  于 12个月前  发布在  Mysql
关注(0)|答案(1)|浏览(86)
  • 你好。我是StackOverflow的新手。尽管在这里问,我通常在文档中查找东西,并对人们以前可能遇到的问题进行研究。请在回答时考虑这一点。*
  • (提前为不正确的术语道歉)*

大家好。我正在处理以下问题,并将非常感谢一些帮助:

  • 我正在尝试使用Docker-compose创建一个Docker容器。
  • 此问题与Docker容器中的MySQL作为服务有关,并且在不同的Docker容器中持续存在,其中不同的应用程序正在使用MySQL运行。
  • 现在我正在尝试让Pydio Cells (Link to installation docs)与MySQL一起运行。现在让这个工作对我来说很重要。
  • 当我sudo docker-compose up -d在其文件夹中的撰写文件,我打开Web界面登录与我预先设置的凭据,我无法登录,无论如何。我将在下面进一步详细说明错误消息。

我是一个编程和使用Docker的新手;可能有一些我不知道的事情,或者在这个过程中忽略了可能导致这个问题的事情。

旁注

对于某些上下文:Ubuntu 20.04 LTS这是我的临时计算机上相关文件夹结构的一部分(位于具有完全用户权限的用户主目录中):

/srv
|
+ /srv/docker
  |
  + /srv/docker/portainer-ce
  |
  + /srv/docker/cells
    |
    + srv/docker/cells/dir
    |
    + srv/docker/cells/sql

当我接下来展示我的合成文件时,这将有望解释为什么某些卷以安装指南最初不推荐的方式挂载。

当前合成文件

以下是我的当前的Pydio Cells编写文件(重新键入;不是与实际文件的精确逐字符匹配)。compose文件位于/srv/docker/cells中,名为docker_compose.yml

version: "3.7"

services:

  mysql:
    image: mysql:8
    container_name: cells_mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root_password  # placeholder
      MYSQL_DATABASE: cells
      MYSQL_USER: sql_user  # placeholder
      MYSQL_PASSWORD: sql_password  # placeholder
    command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
    volumes:
      - "./sql:/var/lib/mysql"
    expose:
      - "3306"  # I used this here as an experiment, but adding this line made no difference. 
    networks:
      -  cels-network

  cells:
    image: pydio/cells:latest
    container_name: cells
    restart: unless-stopped
    ports: ["8088:8080"]
    volumes:
      -  "./dir:/var/cells"
      -  "./data:/var/cells/data"

volumes:
    sql: {}
    data: {}
    dir: {}

networks:
  cells-network:
    driver: bridge

添加 expose的原因:- “3306” 行是我在this page上简单地读到过它,并认为值得一试,看看它是否在这里做了一些事情。它没有;在添加这一行之前和之后,应用程序的行为没有区别。
这个文件的前几次迭代让我将这行添加到mysql环境中:MYSQL_ROOT_HOST: "%"(基于这篇文章here)。这在应用程序行为上也没有区别。
我以前也尝试过将MYSQL_DATABASE: cells以外的所有内容移动到同一文件夹中名为sensitive.env的env_file。这将是一个更理想的设置,因为我不喜欢有凭证包括一个组成文件直接。不幸的是,这实际上没有什么区别。
在上述所有情况下,服务器仍然无法从运行https://localhost:8088的Web UI访问。
我已经确认最新版本的Docker和Docker-compose都已正确安装。

错误(code)s

以下是Web UI直接显示在“数据库配置”面板上方的主要错误代码:
dial tcp 127.0.0.1:3306: connect: connection refused
每当我尝试使用TCP连接时,就会出现此代码。我输入的密码是否正确并不重要。
在这种情况下,我将在“数据库连接”菜单中应用以下设置(请忽略以root身份在任何地方登录的安全问题;我知道。这只是一个测试):

TCP
Host name: localhost
Port: 3306
Database name: cells
Database user: root
Database password: root_password

尝试连接到套接字时,我得到以下错误:
dial unix /var/run/mysql.sock: connect: no such file or directory
我在这里使用了以下设置:

Socket
Socket: /var/run/mysql.sock  # using this instead of /var/lib/mysql.sock is because the Dockerfile (?) creates a link from /var/lib/mysql.sock to /var/run/mysql.sock; it shouldn't make a difference which one I pick
Database name: cells
Database user: root
Database password: root_password

我没有尝试过手动连接,无论如何都不会将其视为可靠的生产能力连接方法。实际上,从可靠性和安全性的Angular 来看,在我看来,只使用TCP是最有意义的。但是,因为我不知道最初设置这些设置将如何影响常规连接尝试,所以我不能肯定地说。
在mysql服务的compose文件中执行以下更改会在WebUI中输出相同的错误。

...
    env_file:
      -  sensitive.env
    environment:
      MYSQL_DATABASE: cells
...

在每次对compose文件进行更改之间,我已经关闭了Docker容器,并使用以下命令每次清除其卷:sudo docker-compose down -v

日志输出

在容器处于活动状态时运行sudo docker-compose logs -f,每次都会给出以下输出:

Attaching to cells, cells_mysql
cells    | ### Pydio Cells Home Edition
cells    |  Version:    4.2.0
cells    |  Built:  09 May 23 17:22 +0000
cells    |  Git commit:     cb8d5c1e61bfad7bedfa9af35944a00f494f4bb7
cells    |  OS/Arch:    linux/amd64
cells    |  Go version:     go1.19.8
cells    | ### About to execute: [cells configure --bind :8080]
cells    | 
cells    | Welcome to Pydio Cells Home Edition installation 
cells    | Pydio Cells Home Edition (v4.2.0) will be configured to run on this machine.
cells    | Make sure to prepare access and credentials to a MySQL 5.6+ (or MariaDB equivalent) server.
cells    | Pick your installation mode when you are ready.
cells    | 
cells    | 
cells    | Installation Server is starting...
cells    | Listening to: https://0.0.0.0:8080
cells    | 
cells    | 2023-05-22T19:02:22.060Z INFO    pydio.rest.install  starting    {"service": "pydio.rest.install", "hook router to": "/a/install"}
cells    | 2023-05-22T19:02:22.060Z INFO    pydio.rest.config   starting    {"service": "pydio.rest.config", "hook router to": "/a/config"}
cells    | 2023-05-22T19:02:22.061Z INFO    pydio.web.install   ready
cells    | 2023-05-22T19:02:22.289Z INFO    pydio.rest.install  ready
cells    | 2023-05-22T19:02:22.290Z INFO    pydio.rest.config   ready
cells    | 2023-05-22T19:02:22.291Z INFO    pydio.server.caddy  ✅ Using the local CA at "rootCA.pem" ✨
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy  ✅ Created a new certificate valid for the following names 📜
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy   - "127.0.0.1"
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy   - "172.22.0.2"
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy   - "localhost"
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy  ✅ The certificate is at "49845dd9adfc33ae5e8553f25721690a.pem" 
cells    |  and the key at "49845dd9adfc33ae5e8553f25721690a-key.pem"
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy  
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy  
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy  👉 If you are behind a reverse proxy, you can either install the RootCA on the proxy machine trust store, or configure your proxy to `insecure_skip_verify` for pointing to Cells.
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy  👉 If you are developing locally, you may install the RootCA in your system trust store to see a green light in your browser!
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy  🗒  To easily install the RootCA in your trust store, use https://github.com/FiloSottile/mkcert. Set the $CAROOT environment variable to the rootCA folder then use 'mkcert -install'
cells    | 2023-05-22T19:02:22.508Z INFO    pydio.server.caddy  
cells    | Open a browser window to: [https://0.0.0.0:8080]
mysql_1  | 2023-05-22 19:02:20+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
mysql_1  | 2023-05-22 19:02:21+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
mysql_1  | 2023-05-22 19:02:21+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
mysql_1  | '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
mysql_1  | 2023-05-22T19:02:21.865110Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
mysql_1  | 2023-05-22T19:02:21.867611Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.33) starting as process 1
mysql_1  | 2023-05-22T19:02:21.877105Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
mysql_1  | 2023-05-22T19:02:22.105857Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
mysql_1  | 2023-05-22T19:02:22.367022Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
mysql_1  | 2023-05-22T19:02:22.367064Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
mysql_1  | 2023-05-22T19:02:22.371844Z 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.
mysql_1  | 2023-05-22T19:02:22.408119Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
mysql_1  | 2023-05-22T19:02:22.408269Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.33'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

请帮帮我作为一个新手,我在这里感到完全被难住了。在我之前似乎没有人遇到过这个问题(或者至少它不是一个有很好文档记录的问题),任何文档都没有给我任何提示,甚至没有提示这里可能出了什么问题。这是一个很大的尝试和弄清楚这一点,我希望张贴在这里可以帮助我在一些能力。如果我忽略了什么,不是因为我懒惰,而是因为它是一个我偶然错过的方法/解决方案,我忽略了,或者因为我没有看到方法/解决方案和这个问题之间的关联。如果是这样的话,我很抱歉。请指出我(和其他人可能有这个问题,并偶然发现这篇文章)对该方法/解决方案。非常感谢您的阅读。我期待着在这里看到建议。祝你今天愉快!

dtcbnfnu

dtcbnfnu1#

在数据库连接窗口中使用mysql而不是localhost。作为localhost将意味着单元格容器。同一网络中的Docker容器可以通过服务名端口相互通信。

相关问题