我有一个用于mysql datbase的docker镜像。
第一次进行此工作时,我将数据库备份到.sql文件,然后从docker-compose我
建立数据库。
但是现在,我进行了一些更新,创建了一个新的.sql文件,然后再次通过docker-compose,我想我将获得我的新数据和新更改。
我的docker-comose文件:
services:
mysql:
image: mysql:latest
container_name: mysqldb
cap_add:
- SYS_NICE # CAP_SYS_NICE
# container_name: my_very_special_server
ports:
- 3307:3306
environment:
MYSQL_DATABASE: wedding
MYSQL_ROOT_PASSWORD: SomeRootPassword1!
MYSQL_USER: someuser
MYSQL_PASSWORD: Password1!
volumes:
- ./dbScript/Dump20201018.sql:/docker-entrypoint-initdb.d/Dump20201018.sql
- db_data:/var/lib/mysql
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: dev_pma
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3307
PMA_ARBITRARY: 1
restart: always
ports:
- 8183:80
server:
container_name: weddingapp_server
build: ./weddingApp-Be
depends_on:
- mysql
environment:
MYSQL_HOST_IP: mysql
ports:
- 4000:4000
links:
- mysql
command: npm run dev
client:
container_name: weddingapp_client
build: ./weddingApp-Fe
ports:
- 3001:3000
environment:
- CHOKIDAR_USEPOLLING=true
tty: true
volumes:
db_data:
构建完成并将其旋转后,我看到我的新数据没有显示,我仍然将旧数据缓存在某个地方吗?我检查了我的mysql镜像的日志,并得到了:
2020-10-18 20:46:59+00:00 [Note] [Entrypoint]: Entrypoint script for
MySQL Server 8.0.21-1debian10 started. 2020-10-18 20:46:59+00:00
[Note] [Entrypoint]: Switching to dedicated user 'mysql' 2020-10-18
20:46:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server
8.0.21-1debian10 started. 2020-10-18T20:46:59.686360Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.21) starting as process 1 2020-10-18T20:46:59.693458Z 1 [System] [MY-013576] [InnoDB]
InnoDB initialization has started. 2020-10-18T20:46:59.987115Z 1
[System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-10-18T20:47:00.115947Z 0 [System] [MY-011323] [Server] X Plugin
ready for connections. Bind-address: '::' port: 33060, socket:
/var/run/mysqld/mysqlx.sock 2020-10-18T20:47:00.196070Z 0 [Warning]
[MY-010068] [Server] CA certificate ca.pem is self signed.
2020-10-18T20:47:00.196193Z 0 [System] [MY-013602] [Server] Channel
mysql_main configured to support TLS. Encrypted connections are now
supported for this channel. 2020-10-18T20:47:00.200913Z 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. 2020-10-18T20:47:00.219538Z 0 [System]
[MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version:
'8.0.21' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL
Community Server - GPL.
我是docker的新手,老实说,我不知道自己在做什么错。有任何想法吗?
最佳答案
仅当数据目录(/var/lib/mysql
)为空时才执行initdb脚本。
您的数据不会被缓存,但会使用您的卷保留到主机上。因此,如果这是一项开发工作,则可以简单地删除db_data
卷的内容(或再次删除并创建):
docker volume rm db_data
docker volume create db_data
关于mysql - 为什么docker使用缓存mysql数据而不是最新的mysql dump?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64418410/