- 你好。我是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.
请帮帮我作为一个新手,我在这里感到完全被难住了。在我之前似乎没有人遇到过这个问题(或者至少它不是一个有很好文档记录的问题),任何文档都没有给我任何提示,甚至没有提示这里可能出了什么问题。这是一个很大的尝试和弄清楚这一点,我希望张贴在这里可以帮助我在一些能力。如果我忽略了什么,不是因为我懒惰,而是因为它是一个我偶然错过的方法/解决方案,我忽略了,或者因为我没有看到方法/解决方案和这个问题之间的关联。如果是这样的话,我很抱歉。请指出我(和其他人可能有这个问题,并偶然发现这篇文章)对该方法/解决方案。非常感谢您的阅读。我期待着在这里看到建议。祝你今天愉快!
1条答案
按热度按时间dtcbnfnu1#
在数据库连接窗口中使用mysql而不是localhost。作为localhost将意味着单元格容器。同一网络中的Docker容器可以通过服务名端口相互通信。