Reputation: 21
I’m trying to run a container from my backend application, but I can’t connect to my SQL Server (mssql
), I get the following error:
ConnectionError: Failed to connect to = 192.168.0.190:1433 - getaddrinfo ENOTFOUND = 192.168.0.190 at connectListener (/app/node_modules/mssql/lib/tedious/connection-pool.js:70:17) at Connection.onConnect (/app/node_modules/tedious/src/connection.ts:1725:9) at Object.onceWrapper (node:events:629:26) at Connection.emit (node:events:514:28) at Connection.emit (/app/node_modules/tedious/src/connection.ts:1868:18) at Connection.socketError (/app/node_modules/tedious/src/connection.ts:2189:12) at /app/node_modules/tedious/src/connection.ts:1992:37 at processTicksAndRejections (node:internal/process/task_queues:77:11) { code: ‘ESOCKET’, originalError: ConnectionError: Failed to connect to = 192.168.0.190:1433 - getaddrinfo ENOTFOUND = 192.168.0.190 at Connection.socketError (/app/node_modules/tedious/src/connection.ts:2189:28) at /app/node_modules/tedious/src/connection.ts:1992:37 at processTicksAndRejections (node:internal/process/task_queues:77:11) { code: ‘ESOCKET’, isTransient: undefined } }
But when I run locally the error does not occur.
My Dockerfile:
FROM node:18-alpine
WORKDIR /app
COPY ./package*.json .
RUN npm install
COPY . .
ENV APP_DATA_BASE = *************
ENV API_HOST = 192.168.0.190
ENV INSTANCE_NAME = mssqlserver
ENV DB_PORT = 1433
ENV PORT = 8080
ENV DIALECT = *****
ENV DB_USER = *****
ENV PASSWORD = ******
ENV TLS_VERSION = *****
ENV SECRET= **********
ENV BI_DATABASE = ****
ENV BI_USER = ****
ENV BI_PASSWORD = *****
ENV BI_HOST = 192.168.0.190
ENV BI_PORT = 1433
EXPOSE 8080
My docker compose
version: ‘3.7’
services:
cockpit-api:
build:
context: .
dockerfile: Dockerfile
# target: base
volumes:
- ./src:/usr/src/app
container_name: cockpit-api
expose:
- '8080'
ports:
- '8080:8080'
command: npm run dev
my App DataSource
import ‘reflect-metadata’
import ‘dotenv/config’
import { join } from ‘path’
import { DataSource } from ‘typeorm’
export const AppDataSource = new DataSource({
type: 'mssql',
host: process.env.API_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USER,
password: process.env.PASSWORD,
database: process.env.APP_DATA_BASE,
synchronize: false,
logging: false,
entities: [join(__dirname, './entities/*{.ts,.js}')],
migrations: [join(__dirname, './migrations/*{.ts,.js}')],
subscribers: [],
extra: {
encrypt: false,
trustServerCertificate: true
}
})
My serve.ts
import 'reflect-metadata'
import { AppDataSource } from '../infra/db/mssql/cockpit/datasource'
import mssql from 'mssql';
const sql = mssql
import app from './config/app'
export const biEmisConfig = {
user: process.env.BI_USER,
password: process.env.BI_PASSWORD,
database: process.env.BI_DATABASE,
server: process.env.BI_HOST || '',
pool: {
max: 10,
min: 0,
idleTimeoutMillis: 30000
},
options: {
encrypt: false, // for azure
trustServerCertificate: true, // change to true for local dev / self-signed certs
port: Number(process.env.BI_PORT)
}
}
AppDataSource.initialize()
.then(async () => {
console.log('App Data Source initilized')
await sql.connect(biEmisConfig)
console.log('Bi initialized')
app.listen(process.env.PORT, () => {
console.log(`Server is running on ${process.env.PORT}`)
})
})
.catch(error => console.error(error))
My package.json
{
"name": "cockpit-api",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"type": "commonjs",
"scripts": {
"start": "node build/main/server.js",
"build": "rimraf build && tsc",
"dev": "tsnd --transpile-only --respawn --ignore-watch node_modules src/main/server.ts",
"test": "vitest",
"coverage": "vitest run --coverage",
"typeorm": "typeorm-ts-node-commonjs",
"migration:generate": "typeorm-ts-node-commonjs migration:generate -d src/infra/db/mssql/cockpit/datasource.ts",
"migration:up": "typeorm-ts-node-commonjs migration:run -d src/infra/db/mssql/cockpit/datasource.ts",
"migration:down": "typeorm-ts-node-commonjs migration:revert -d src/infra/db/mssql/cockpit/datasource.ts",
"migration:create": "typeorm migration:create"
}
"dependencies": {
"bcrypt": "^5.1.0",
"dotenv": "^16.3.1",
"express": "^4.18.2",
"jsonwebtoken": "^9.0.0",
"mssql": "^9.1.2",
"reflect-metadata": "^0.1.13",
"rimraf": "^5.0.1",
"typeorm": "^0.3.17",
"validator": "^13.9.0"
},
"devDependencies": {
"@types/bcrypt": "^5.0.0",
"@types/express": "^4.17.17",
"@types/jsonwebtoken": "^9.0.2",
"@types/mssql": "^8.1.2",
"@types/node": "^20.3.2",
"@types/validator": "^13.7.17",
"@typescript-eslint/eslint-plugin": "^5.60.0",
"@typescript-eslint/parser": "^5.60.0",
"@vitest/coverage-v8": "^0.32.2",
"eslint": "^8.43.0",
"eslint-config-standard-with-typescript": "^35.0.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-promise": "^6.1.1",
"prettier": "^2.8.8",
"ts-node": "^10.9.1",
"ts-node-dev": "^2.0.0",
"typescript": "^5.1.3",
"vitest": "^0.32.2"
}
}
What am I doing wrong?
I tried to change the host
Upvotes: 0
Views: 153