我正在尝试为项目的两个组件构建两个docker图像。一个是节点应用程序,另一个是MySQL DB。我使用脚本来创建数据库并填充DB docker映像中的表,因为我不能使用ORM创建存储过程。我的配置是这样的:
FROM mysql:8.0.26
ADD initialization.sql /docker-entrypoint-initdb.d
ENV MYSQL_ALLOW_EMPTY_PASSWORD=thisisfine
EXPOSE 3306当我运行docker-compose up --build时,数据库镜像关闭,这会导致我的另一个镜像出现问题。我不知道为什么。以下是日志中显示的内容:
Creating libraryly_db_1 ... done
Creating libraryly_backend_1 ... done
Attaching to libraryly_db_1, libraryly_backend_1
backend_1 | Waiting for the DB to start...
db_1 | 2021-08-15 17:10:58+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.26-1debian10 started.
db_1 | 2021-08-15 17:10:58+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
db_1 | 2021-08-15 17:10:58+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.26-1debian10 started.
db_1 | 2021-08-15 17:10:58+00:00 [Note] [Entrypoint]: Initializing database files
db_1 | 2021-08-15T17:10:58.655968Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.26) initializing of server in progress as process 42
db_1 | 2021-08-15T17:10:58.676504Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
db_1 | 2021-08-15T17:10:59.618507Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
db_1 | 2021-08-15T17:11:01.811035Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
db_1 | 2021-08-15T17:11:01.811791Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
db_1 | 2021-08-15T17:11:02.140665Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off
the --initialize-insecure option.
db_1 | 2021-08-15 17:11:07+00:00 [Note] [Entrypoint]: Database files initialized
db_1 | 2021-08-15 17:11:07+00:00 [Note] [Entrypoint]: Starting temporary server
db_1 | 2021-08-15T17:11:07.714680Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.26) starting as process 91
db_1 | 2021-08-15T17:11:07.750557Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
db_1 | 2021-08-15T17:11:08.000431Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
db_1 | 2021-08-15T17:11:08.397505Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
db_1 | 2021-08-15T17:11:08.397776Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
db_1 | 2021-08-15T17:11:08.399964Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
db_1 | 2021-08-15T17:11:08.400702Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now suppor
ted for this channel.
db_1 | 2021-08-15T17:11:08.407431Z 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.
db_1 | 2021-08-15T17:11:08.463387Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock
db_1 | 2021-08-15T17:11:08.463648Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.26' socket: '/var/run/mysq
ld/mysqld.sock' port: 0 MySQL Community Server - GPL.
db_1 | 2021-08-15 17:11:08+00:00 [Note] [Entrypoint]: Temporary server started.
db_1 | Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
db_1 | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
db_1 | Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
db_1 | Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
backend_1 | Operation timed out
backend_1 | Starting the server...
db_1 |
db_1 | 2021-08-15 17:11:15+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/initialization.sql
backend_1 |
backend_1 | > libraryly@1.0.0 start /app
backend_1 | > node app
backend_1 |
db_1 |
db_1 |
db_1 | 2021-08-15 17:11:16+00:00 [Note] [Entrypoint]: Stopping temporary server
db_1 | 2021-08-15T17:11:16.132929Z 11 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.26).
backend_1 | Listening at: http://localhost:5000
backend_1 | ConnectionRefusedError [SequelizeConnectionRefusedError]: connect ECONNREFUSED 172.23.0.2:3306
backend_1 | at ConnectionManager.connect (/app/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:116:17)
backend_1 | at processTicksAndRejections (internal/process/task_queues.js:93:5)
backend_1 | at async ConnectionManager._connect (/app/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:318:24)
backend_1 | at async /app/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:250:32
backend_1 | at async ConnectionManager.getConnection (/app/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:280:7)
backend_1 | at async /app/node_modules/sequelize/lib/sequelize.js:613:26
backend_1 | at async Sequelize.authenticate (/app/node_modules/sequelize/lib/sequelize.js:867:5) {
backend_1 | parent: Error: connect ECONNREFUSED 172.23.0.2:3306
backend_1 | at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16) {
backend_1 | errno: -111,
backend_1 | code: 'ECONNREFUSED',
backend_1 | syscall: 'connect',
backend_1 | address: '172.23.0.2',
backend_1 | port: 3306,
backend_1 | fatal: true 我不知道是什么原因导致root用户发送关机请求。请帮帮忙。
发布于 2021-08-15 17:39:11
在这种情况下,如果您使用docker-compose,则不需要dockerfile,您可以这样配置docker-compose文件
version: "3.7"
services:
mysql:
image: mysql:8.0.17
container_name: localmysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: initialDatabaseName
ports:
- 3306:3306
volumes:
- /your_local/path:/var/lib/mysql如果你想初始化数据库,我建议你使用ORM,它允许你使用数据库迁移,或者从后端运行你的脚本
https://stackoverflow.com/questions/68793836
复制相似问题