在Ubuntu中通过docker-compose部署MySQL时无法部署;docker-compose.yml文件如下:
version: '3'services: mysql: restart: always image: mysql:8.2 network_mode: bridge container_name: mysql environment: MYSQL_ROOT_PASSWORD: root123 command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M volumes: - /etc/localtime:/etc/localtime:ro - /data/docker/mysql/mysql:/var/lib/mysql - /data/docker/mysql/etc:/etc/mysql:ro ports: - 3306:3306
我的步骤如下:
1.注释挂载,直接启动mysql 成功
2.复制容器中的/var/lib/mysql到宿主机我希望挂载的地方
3.复制/etc/mysql ,然后编写my.cnf放到宿主机/data/docker/mysql/etc/mysql/conf.d下
4.删除镜像
5.打开注释
错误如下:
2024-01-21 12:00:35+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.2.0-1.el8 started.2024-01-21 12:00:35+08:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config command was: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M --verbose --help --log-bin-index=/tmp/tmp.5xbHMoySK8 mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory)mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 36.mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
把这一句- /data/docker/mysql/etc:/etc/mysql:ro
改为- /data/docker/mysql/etc/mysql:/etc/mysql:ro
如果按照你说的你将 my.cnf
放到 /data/docker/mysql/etc/mysql/conf.d
中的话,你挂载的路径是 /data/docker/mysql/etc:/etc/mysql
。
等于说你把相对路径 mysql/conf.d
挂载到了容器 /etc/mysql
下面,所以,你如果在容器内要读到 my.cnf
的话,你应该读 /etc/mysql/mysql/conf.d
,而不是
/etc/mysql/conf.d/
。
配置:
- /data/docker/mysql/etc:/etc/mysql:ro
错误:
mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory)
你的 /data/docker/mysql/etc 里没有 conf.d ,它被挂载到了 /etc/mysql/ ,导致启动的时候找不到 /etc/mysql/conf.d 。
从你给出的错误信息来看,问题出在MySQL无法读取/etc/mysql/conf.d/
目录。这可能是由于你在第3步中,将/etc/mysql
复制到了宿主机/data/docker/mysql/etc/mysql
,但是并没有复制/etc/mysql/conf.d/
目录。
你可以尝试以下步骤来解决这个问题:
/etc/mysql
时,也复制了/etc/mysql/conf.d/
目录。你可以修改你的docker-compose.yml文件,添加一个额外的卷映射来复制这个目录。my.cnf
。看起来它在启动时无法找到这个目录。请确保这个配置文件中的路径是正确的。修改后的docker-compose.yml文件可能如下:
version: '3'services: mysql: restart: always image: mysql:8.2 network_mode: bridge container_name: mysql environment: MYSQL_ROOT_PASSWORD: root123 command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M volumes: - /etc/localtime:/etc/localtime:ro - /data/docker/mysql/mysql:/var/lib/mysql - /data/docker/mysql/etc:/etc/mysql:ro - /data/docker/mysql/etc/mysql/conf.d:/etc/mysql/conf.d:ro # 添加这一行来映射conf.d目录 ports: - 3306:3306
请注意,这只是一个可能的解决方案,具体的情况可能会根据你的环境有所不同。如果问题仍然存在,你可能需要进一步检查你的配置和环境设置。
使用docker-compose 部署 MySQL 报错 docker-compose.yml mysql配置部分 my.cnf文件
数据库为:MSSQL 2008 R2 OS=Windows Server 2008 R2 错误日志为: 2014年3月12日下午5:19:53 org.apache.catalina.realm.UserDatabaseRealm开始内部严重:异常查找键UserDatabase javax.naming.NameNotFoundException:Name[UserDatabase]下的UserD
我的docker-compose.yml文件中有关mysql服务的配置如下,我想将/app/mysql/conf/mycnf/my.cnf挂载与/etc/my.cnf想对应,但是这里在volumes:下配置相当于目录了,不是文件,该怎么弄才能让文件相对应?
当我试图将包含一个简单的streamlit应用程序的Docker映像部署到Heroku时,我遇到了一些初期问题。我的问题是,部署后我无法访问我的Docker。经过仔细观察,我发现了以下错误: 错误R10(启动超时)- 我研究并了解到这是因为端口不可用,因为Heroku将动态分配端口号。 我在Dockerfile中添加了以下内容,以确保不会发生这种情况。 我现在可以看到网络URL和外部URL端口号是
我已经将Shopizer war文件部署到Tomcat Elastic Beanstalk实例。我已经配置了一个mySQL数据库,据我所知,一切都应该是正确的。问题是当我尝试访问URL时,我收到了502错误。我知道Elastic Beanstalk在60后超时,所以我增加了超时限制,但仍然遇到了问题。 我在我的Catalina.out日志中注意到了这一点。我知道这只是一个警告,但它可能指向我的问题
我使用下面的命令来运行我的项目。 mvn清洁安装 我使用以下命令创建了一个数据库 创建数据库密钥斗篷;将keydeave.*上的所有特权授予“keydeave”@“%”; 我使用下面的命令创建了一个docker映像,并创建了一个映像。 码头工人建造-t钥匙斗篷。 当我使用Docker运行时, docker run-p 8080:8080-e DB_VENDOR=MYSQL-e DB_ADDR=19