docker mysql容器启动不_MySQL容器无法在Docker Compose中运行初始化脚本

我在让我的MySQL容器运行来自Docker Compose的一些初始化脚本(创建一些数据库)时遇到问题。根据Docker

Hub上的文档,我将.sql文件挂载在其中,/docker-entrypoint-initdb.d但无济于事。

我的撰写文件如下:

version: '2'

services:

database:

image: mysql

ports:

- "3307:3306"

environment:

MYSQL_ROOT_PASSWORD: root

volumes:

- ./scripts/db:/docker-entrypoint-initdb.d

myservice:

image: company/myservice

expose:

- "10001"

depends_on:

- database

links:

- database

environment:

SERVICE_PORT: 10001

DATABASE_URL: jdbc:mysql://database:3306/myservice?autoReconnect=true&useSSL=false&characterEncoding=UTF-8

的内容./scripts/db只有1个文件init-databases.sql:

CREATE DATABASE myservice;

一旦启动,MySQL正在运行,但未创建数据库。服务容器还成功链接到MySQL容器。扑向MySQL容器;初始化脚本已成功安装在正确的位置。

有人可以在这里看到一些明显的问题吗?

撰写日志

database_1 | 2016-04-01T05:35:55.020279Z 0 [Note] mysqld (mysqld 5.7.11) starting as process 1 ...

database_1 | 2016-04-01T05:35:55.023277Z 0 [Note] InnoDB: PUNCH HOLE support available

database_1 | 2016-04-01T05:35:55.023305Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

database_1 | 2016-04-01T05:35:55.023316Z 0 [Note] InnoDB: Uses event mutexes

database_1 | 2016-04-01T05:35:55.023324Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier

database_1 | 2016-04-01T05:35:55.023332Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.8

database_1 | 2016-04-01T05:35:55.023344Z 0 [Note] InnoDB: Using Linux native AIO

database_1 | 2016-04-01T05:35:55.023491Z 0 [Note] InnoDB: Number of pools: 1

database_1 | 2016-04-01T05:35:55.023566Z 0 [Note] InnoDB: Using CPU crc32 instructions

database_1 | 2016-04-01T05:35:55.028689Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M

database_1 | 2016-04-01T05:35:55.041026Z 0 [Note] InnoDB: Completed initialization of buffer pool

database_1 | 2016-04-01T05:35:55.047324Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().

database_1 | 2016-04-01T05:35:55.061537Z 0 [Note] InnoDB: Highest supported file format is Barracuda.

database_1 | 2016-04-01T05:35:55.076895Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables

database_1 | 2016-04-01T05:35:55.076987Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...

database_1 | 2016-04-01T05:35:55.095683Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.

database_1 | 2016-04-01T05:35:55.096484Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.

database_1 | 2016-04-01T05:35:55.096540Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.

database_1 | 2016-04-01T05:35:55.096931Z 0 [Note] InnoDB: Waiting for purge to start

database_1 | 2016-04-01T05:35:55.147986Z 0 [Note] InnoDB: 5.7.11 started; log sequence number 11992841

database_1 | 2016-04-01T05:35:55.148204Z 0 [Note] Plugin 'FEDERATED' is disabled.

database_1 | 2016-04-01T05:35:55.149262Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.

database_1 | 2016-04-01T05:35:55.149443Z 0 [Warning] CA certificate ca.pem is self signed.

database_1 | 2016-04-01T05:35:55.150272Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool

database_1 | 2016-04-01T05:35:55.151068Z 0 [Note] InnoDB: Buffer pool(s) load completed at 160401 5:35:55

database_1 | 2016-04-01T05:35:55.152775Z 0 [Note] Server hostname (bind-address): '*'; port: 3306

database_1 | 2016-04-01T05:35:55.154441Z 0 [Note] IPv6 is available.

database_1 | 2016-04-01T05:35:55.154553Z 0 [Note] - '::' resolves to '::';

database_1 | 2016-04-01T05:35:55.154571Z 0 [Note] Server socket created on IP: '::'.

database_1 | 2016-04-01T05:35:55.156680Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.

database_1 | 2016-04-01T05:35:55.156738Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.

database_1 | 2016-04-01T05:35:55.158280Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.

database_1 | 2016-04-01T05:35:55.165273Z 0 [Note] Event Scheduler: Loaded 0 events

database_1 | 2016-04-01T05:35:55.173462Z 0 [Note] mysqld: ready for connections.

database_1 | Version: '5.7.11' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 如果你想在启动MySQL Docker容器时执行一些初始化的SQL脚本,可以通过在容器启动时挂载一个包含脚本的目录,并在Dockerfile使用ENTRYPOINT命令来指定执行脚本的命令。 首先,确保你已经安装了DockerDocker Compose。如果你使用的是Docker Desktop,那么你不需要额外安装Docker Compose。然后,你可以从GitHub上下载对应版本的Docker Compose。 接下来,你需要选择MySQL版本为8.0的Docker镜像。你可以使用以下命令来启动一个MySQL容器,并指定root用户的密码和创建的数据库名: ``` docker run -d --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=admin mysql:8.0 ``` 这样会创建一个名为admin的数据库,但是它是一个空的数据库。如果你想在容器启动时自动执行指定的SQL脚本,你可以将这些脚本放在一个目录,并将该目录挂载到容器。例如,你可以将脚本放在一个名为`init-scripts`的目录。 然后,你可以使用以下的Docker Compose文件来定义你的MySQL容器,并在该文件指定挂载的目录和执行脚本的命令: ```yaml version: '3' services: mysql: image: mysql:8.0 ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: admin volumes: - ./init-scripts:/docker-entrypoint-initdb.d ``` 在这个例子,我们将`./init-scripts`目录挂载到容器的`/docker-entrypoint-initdb.d`目录,这是MySQL官方镜像用于执行初始化脚本的目录。你可以将你的初始化SQL脚本放在`./init-scripts`目录,并在容器启动时自动执行。 希望这能帮到你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [docker容器启动Mysql执行初始化sql脚本实现](https://blog.csdn.net/Allocator/article/details/117092356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [Docker(五)、启动mysql时自动执行脚本](https://blog.csdn.net/qq_32923745/article/details/80817477)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值