CCC*_*CCC 2 mysql redis node.js sequelize.js docker
我正在使用 Docker 来提供容器服务。
\n我创建了一个种子文件并通过 运行它npx sequelize-cli db:seed:all,然后出现错误:
Sequelize CLI [Node: 13.12.0, CLI: 6.2.0, ORM: 6.5.1]\n\nLoaded configuration file "migrations/config.js".\nUsing environment "development".\nevents.js:292\n throw er; // Unhandled 'error' event\n ^\n\nError: Redis connection to my-redis:6379 failed - getaddrinfo ENOTFOUND my-redis\n at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26)\nEmitted 'error' event on RedisClient instance at:\n at RedisClient.on_error (/Users/CCCC/Desktop/Source Tree/my-server/node_modules/redis/index.js:342:14)\n at Socket.<anonymous> (/Users/CCCC/Desktop/Source Tree/my-server/node_modules/redis/index.js:223:14)\n at Socket.emit (events.js:315:20)\n at Socket.EventEmitter.emit (domain.js:485:12)\n at emitErrorNT (internal/streams/destroy.js:84:8)\n at processTicksAndRejections (internal/process/task_queues.js:84:21) {\n errno: -3008,\n code: 'ENOTFOUND',\n syscall: 'getaddrinfo',\n hostname: 'my-redis'\n}\nRun Code Online (Sandbox Code Playgroud)\n似乎显示我的redis未找到/未在端口6379运行。
\n然后我运行docker ps,它显示my-redis在端口 6379 中运行。
\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n...\nf637ee218d03 redis:6 "docker-entrypoint.s\xe2\x80\xa6" 18 minutes ago Up 18 minutes 0.0.0.0:6379->6379/tcp my-server_my-redis_1\nRun Code Online (Sandbox Code Playgroud)\ndocker-compose.yml
\nversion: '2.1'\n\nservices:\n my-db:\n image: mysql:5.7\n ...\n ports:\n - 3306:3306\n my-redis:\n image: redis:6\n ports:\n - 6379:6379\n my-web:\n restart: always\n environment:\n - NODE_ENV=dev\n - PORT=3030\n build: .\n command: >\n sh -c "npm install && ./wait-for-db-redis.sh my-db my-redis npm run dev"\n ports:\n - "3030:3030"\n volumes:\n - ./:/server\n depends_on:\n - my-db\n - my-redis\n\nRun Code Online (Sandbox Code Playgroud)\n.sequelizerc
\nconst path = require('path');\n\nmodule.exports = {\n 'config': path.resolve('migrations/config.js'),\n 'seeders-path': path.resolve('migrations/seeders'),\n 'models-path': path.resolve('migrations/models.js')\n};\n\nRun Code Online (Sandbox Code Playgroud)\n迁移/model.js
\nconst Sequelize = require('sequelize');\nconst app = require('../src/app');\nconst sequelize = app.get('sequelizeClient');\nconst models = sequelize.models;\n\nmodule.exports = Object.assign({\n Sequelize,\n sequelize\n}, models);\n\nRun Code Online (Sandbox Code Playgroud)\n配置文件
\nconst app = require('../src/app');\nconst env = process.env.NODE_ENV || 'development';\nconst dialect = 'mysql';\n\nmodule.exports = {\n [env]: {\n dialect,\n url: app.get(dialect),\n migrationStorageTableName: '_migrations'\n }\n};\n\nRun Code Online (Sandbox Code Playgroud)\n
您是在应用程序的 Docker Compose 容器内还是在 Docker 主机上运行迁移?
从主机的角度来看,不存在这样的主机名my-redis (它只是 Docker 覆盖网络中包含该容器的一个东西)。
由于您已将 Redis 端口 6379 暴露给您的主机(实际上是整个世界),因此您可以localhost:6379在主机上使用。
| 归档时间: |
|
| 查看次数: |
9472 次 |
| 最近记录: |