1

I'm trying to deploy a node Express app to Heroku using docker via a Gihub action ( uses: gonuit/heroku-docker-deploy@v1.3.3) and want to run db-migrate up in the Dockerfile.

It looks like db-migrate can't take into account the config vars (environment variables) provided by Heroku.

Dockerfile:

FROM node:16-alpine3.13
WORKDIR /app
COPY package.json ./
RUN yarn install --production
COPY . .
RUN yarn db-migrate up -e production
CMD ["yarn", "start"]

database.json:

{
  "dev": {
    "driver": "mysql",
    "dialect": "mysql",
    "multipleStatements": true,
    "host": { "ENV": "DB_HOST" },
    "user": { "ENV": "DB_USER" },
    "password": { "ENV": "DB_PASSWORD" },
    "database": { "ENV": "DB_NAME" },
    "port": { "ENV": "DB_PORT" }
  },
  "production": {
    "driver": "mysql",
    "dialect": "mysql",
    "multipleStatements": true,
    "database_url": { "ENV": "CLEARDB_DATABASE_URL" },
    "host": { "ENV": "DB_HOST" },
    "user": { "ENV": "DB_USER" },
    "password": { "ENV": "DB_PASSWORD" },
    "database": { "ENV": "DB_NAME" }
  },
  "sql-file": true
}

Error:

 [ERROR] AssertionError [ERR_ASSERTION]: ifError got unwanted exception: connect ECONNREFUSED 127.0.0.1:3306
      at module.exports (/app/node_modules/db-migrate/lib/commands/helper/assert.js:9:14)
      at /app/node_modules/db-migrate/lib/commands/up.js:19:14
      at /app/node_modules/db-migrate/connect.js:17:7
      at /app/node_modules/db-migrate/lib/driver/index.js:95:9
      at /app/node_modules/db-migrate-mysql/index.js:518:14
      at Connection.<anonymous> (/app/node_modules/mysql2/lib/connection.js:775:13)
      at Object.onceWrapper (node:events:510:26)
      at Connection.emit (node:events:390:28)
      at Connection._notifyError (/app/node_modules/mysql2/lib/connection.js:236:12)
      at Connection._handleFatalError (/app/node_modules/mysql2/lib/connection.js:167:10)
      at Connection._handleNetworkError (/app/node_modules/mysql2/lib/connection.js:180:10)
      at Socket.emit (node:events:390:28)
      at emitErrorNT (node:internal/streams/destroy:157:8)
      at emitErrorCloseNT (node:internal/streams/destroy:122:3)
      at processTicksAndRejections (node:internal/process/task_queues:83:21)
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1161:16)
  error Command failed with exit code 1.
tminus109
  • 11
  • 1

0 Answers0