node.js - docker文件中的Mysql连接问题
问题描述
我想创建节点 js 应用程序的 docker 映像。它在运行时出错,我想我必须将 SQL 代码添加到 docker 文件但不知道如何。我不想使用 docker composer,只想将所有内容都放在一个 docker 文件中。
RUN mkdir -p /app
WORKDIR /app
ADD package*.json /app/
RUN cd /app && npm install
COPY . .
RUN cd /app && npm run build
ENV HOST=0.0.0.0
ENV PORT=3000
ENV MYSQL_CONNECTION_URL=mysql://root@127.0.0.1:3306/db
EXPOSE ${PORT}
CMD [ "npm", "start" ]
> ah-feedback-service@1.0.0 migrate /app
> node ./dist/migrate
Migrating schemas (alter existing schema)
Connection fails: Error: connect ECONNREFUSED 127.0.0.1:3306
It will be retried for the next request.
events.js:182
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED 127.0.0.1:3306
at Object._errnoException (util.js:1026:11)
at _exceptionWithHostPort (util.js:1049:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1174:14)
--------------------
at Protocol._enqueue (/app/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/app/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at PoolConnection.connect (/app/node_modules/mysql/lib/Connection.js:119:18)
at Pool.getConnection (/app/node_modules/mysql/lib/Pool.js:48:16)
at MySQL.connect (/app/node_modules/loopback-connector-mysql/lib/mysql.js:90:17)
at Object.initializeDataSource [as initialize] (/app/node_modules/loopback-connector-mysql/lib/mysql.js:44:28)
at Mysql8DataSource.DataSource.setup (/app/node_modules/loopback-datasource-juggler/lib/datasource.js:493:19)
at Mysql8DataSource.DataSource (/app/node_modules/loopback-datasource-juggler/lib/datasource.js:138:8)
at Mysql8DataSource (/app/dist/datasources/mysql-8.datasource.js:25:9)
at value_promise_1.transformValueOrPromise.args (/app/node_modules/@loopback/context/dist/resolver.js:46:16)
at Object.transformValueOrPromise (/app/node_modules/@loopback/context/dist/value-promise.js:227:16)
at Object.instantiateClass (/app/node_modules/@loopback/context/dist/resolver.js:41:34)
at Binding._setValueGetter [as _getValue] (/app/node_modules/@loopback/context/dist/binding.js:393:59)
at resolution_session_1.ResolutionSession.runWithBinding.s (/app/node_modules/@loopback/context/dist/binding.js:199:29)
at value_promise_1.tryWithFinally (/app/node_modules/@loopback/context/dist/resolution-session.js:69:53)
at Object.tryWithFinally (/app/node_modules/@loopback/context/dist/value-
promise.js:158:18)
npm info lifecycle ah-feedback-service@1.0.0~migrate: Failed to exec migrate script
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! ah-feedback-service@1.0.0 migrate: `node ./dist/migrate`
npm ERR! Exit status 1
npm ERR!
解决方案
推荐阅读
- symfony - PhpStorm 不能自动完成存储库文件上的 Symfony Doctrine 字段名称?
- sass - Travis CI 可以编译 Sass 吗?
- c# - 如何在 C# 控制台应用程序中忽略“Enter”键?
- javascript - 导航栏没有隐藏在使用 javascript 的滚动上
- r - 通过使用管道复制和替换变量来扩展 R 中的数据框
- selenium - Java 中的 Chrome Webdriver 分离选项
- html - 如何通过迭代不同的 id 在 django 中获取发布数据
- javascript - 获取 javascript 变量值并将其存储到 django 变量中,反之亦然
- html - 使用角度存储多个单选按钮值
- javascript - 如何使用 bootstrap4 修复图像对齐?