Docker:数据库没有创建



我正在运行docker-compose.yml文件,当我运行docker-compose --verbose up --build我得到错误:
Host 'websites_backend_1.websites_default' is not allowed to connect to this MySQL server
,这是因为数据库没有正确构建。当我查看数据库的日志时,我看到:

{"log":"2020-07-17T20:47:32.048295Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.n","stream":"stderr","time":"2020-07-17T20:47:32.048692809Z"}
{"log":"2020-07-17T20:47:32.048574Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.n","stream":"stderr","time":"2020-07-17T20:47:32.048985478Z"}
{"log":"2020-07-17T20:47:32.053617Z 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.n","stream":"stderr","time":"2020-07-17T20:47:32.054070073Z"}
{"log":"2020-07-17T20:47:32.074099Z 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.n","stream":"stderr","time":"2020-07-17T20:47:32.07428149Z"}
{"log":"2020-07-17T20:57:31.584660Z 0 [System] [MY-013172] [Server] Received SHUTDOWN from user u003cvia user signalu003e. Shutting down mysqld (Version: 8.0.21).n","stream":"stderr","time":"2020-07-17T20:57:31.584841262Z"}
{"log":"2020-07-17T20:57:32.156022Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.21)  MySQL Community Server - GPL.n","stream":"stderr","time":"2020-07-17T20:57:32.156200018Z"}

来自- "./mysql:/var/lib/mysql"的我的./mysql目录为空

docker container ls产生

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
6b418818c780        websites_frontend   "docker-entrypoint.s…"   49 seconds ago      Up 48 seconds       0.0.0.0:3002->3000/tcp              websites_frontend_1
389d86543214        websites_backend    "python3 manage.py r…"   50 seconds ago      Up 49 seconds       0.0.0.0:8000->8000/tcp              websites_backend_1
03ab9131cf37        mysql:latest        "docker-entrypoint.s…"   24 minutes ago      Up 50 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   websites_db_1
d03eb504da0f        memcached           "memcached '-m 64'"      About an hour ago   Up 50 seconds       0.0.0.0:11211->11211/tcp            websites_cache_1 

当我做docker exec -it websites_db_1 bash
我可以做show databases,但看不到my_database

在本地,我的docker项目正在运行,但在我的服务器上却没有。

为什么会发生这种情况?我想不通。

docker-compose.yml:

version: "3.2"
services:
backend:
build: ./backend
volumes:
- ./backend:/app/backend
ports:
- "8000:8000"
stdin_open: true
tty: true
command: python3 manage.py runserver 0.0.0.0:8000
depends_on:
- db
- cache
links:
- db
frontend:
build: ./frontend
volumes:
- ./frontend:/app
#One-way volume to use node_modules from inside image
- /app/node_modules
ports:
- "3002:3000"
environment:
- NODE_ENV=development
- CHOKIDAR_USEPOLLING=true
depends_on:
- backend
tty: true
command: npm start

db:
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password
volumes:
- "./mysql:/var/lib/mysql"
- "./.data/conf:/etc/mysql/conf.d"
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: my_database
MYSQL_USER: root
MYSQL_PASSWORD: root
cache:
image: memcached
ports:
- "11211:11211"
expose:
- "11211"
entrypoint:
- memcached
- -m 64
volumes:
mysql: {}

我去过那里,这很容易,但在生产中不被认可,当你第一次运行Mysql容器(在你的情况下是db(时,它会在.Mysql上创建一些文件,因为你在卷上定义了:

volumes:
- "./mysql:/var/lib/mysql"
- "./.data/conf:/etc/mysql/conf.d"

因此,当您再次运行它时,文件就在那里,它会跳过数据库的创建,假设它已经有了信息。

因此,要修复它,只需删除机器上.mysql文件夹的内容,然后重新运行容器。

以简化运行的过程

从未(从未(投入生产

docker-compose rm -fv;
rm -rf .mysql/*

但请记住,不要在生产中运行。

最新更新