Connecting a NodeJS container to a MySQL database
up vote
0
down vote
favorite
Before marking this post as a duplicate note that I've already looked at the other related posts here and pretty much everywhere I could without finding a solution to my precise case. I just keep getting confused between docker-compose.yml
versions and linking the ports to each other.
Here's the issue:
I've created two containers with Docker, one hosting a NodeJS server, one hosting a MySQL database.
My docker-compose.yml looks like this:
version: '3'
services:
server:
build: ./server/
ports:
- "8080:8080"
depends_on:
- db
db:
build: ./db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: dashboard_nodejs
MYSQL_USER: root
MYSQL_PASSWORD: password
client:
image: angular_app
build: ./front/
ports:
- "4242:80"
depends_on:
- server
When running docker-compose up
, all of my apps are built and run without an issue until the server tries to connect to MySQL, exiting with :
Error: connect ECONNREFUSED 172.20.0.2:3306 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)
The dockerfile for my database only contains
FROM mysql
COPY init_db.sql /docker-entrypoint-initdb.d/
and init_db.sql currently is
CREATE DATABASE IF NOT EXISTS dashboard_nodejs;
GRANT ALL PRIVILEGES ON dashboard_nodejs.*
TO 'root'@'%' IDENTIFIED BY 'password'
WITH GRANT OPTION;
Finally, my server attemps to establish the connection with the following parameters:
var con = mySql.createConnection({
host: "db",
user: "root",
password: "password",
database: "dashboard_nodejs"
});
I have no clue why the connection is refused by mysql even with (what looks to me like) the right credentials.
I apologize in advance if this particular case has already been discussed.
mysql node.js docker
add a comment |
up vote
0
down vote
favorite
Before marking this post as a duplicate note that I've already looked at the other related posts here and pretty much everywhere I could without finding a solution to my precise case. I just keep getting confused between docker-compose.yml
versions and linking the ports to each other.
Here's the issue:
I've created two containers with Docker, one hosting a NodeJS server, one hosting a MySQL database.
My docker-compose.yml looks like this:
version: '3'
services:
server:
build: ./server/
ports:
- "8080:8080"
depends_on:
- db
db:
build: ./db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: dashboard_nodejs
MYSQL_USER: root
MYSQL_PASSWORD: password
client:
image: angular_app
build: ./front/
ports:
- "4242:80"
depends_on:
- server
When running docker-compose up
, all of my apps are built and run without an issue until the server tries to connect to MySQL, exiting with :
Error: connect ECONNREFUSED 172.20.0.2:3306 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)
The dockerfile for my database only contains
FROM mysql
COPY init_db.sql /docker-entrypoint-initdb.d/
and init_db.sql currently is
CREATE DATABASE IF NOT EXISTS dashboard_nodejs;
GRANT ALL PRIVILEGES ON dashboard_nodejs.*
TO 'root'@'%' IDENTIFIED BY 'password'
WITH GRANT OPTION;
Finally, my server attemps to establish the connection with the following parameters:
var con = mySql.createConnection({
host: "db",
user: "root",
password: "password",
database: "dashboard_nodejs"
});
I have no clue why the connection is refused by mysql even with (what looks to me like) the right credentials.
I apologize in advance if this particular case has already been discussed.
mysql node.js docker
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Before marking this post as a duplicate note that I've already looked at the other related posts here and pretty much everywhere I could without finding a solution to my precise case. I just keep getting confused between docker-compose.yml
versions and linking the ports to each other.
Here's the issue:
I've created two containers with Docker, one hosting a NodeJS server, one hosting a MySQL database.
My docker-compose.yml looks like this:
version: '3'
services:
server:
build: ./server/
ports:
- "8080:8080"
depends_on:
- db
db:
build: ./db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: dashboard_nodejs
MYSQL_USER: root
MYSQL_PASSWORD: password
client:
image: angular_app
build: ./front/
ports:
- "4242:80"
depends_on:
- server
When running docker-compose up
, all of my apps are built and run without an issue until the server tries to connect to MySQL, exiting with :
Error: connect ECONNREFUSED 172.20.0.2:3306 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)
The dockerfile for my database only contains
FROM mysql
COPY init_db.sql /docker-entrypoint-initdb.d/
and init_db.sql currently is
CREATE DATABASE IF NOT EXISTS dashboard_nodejs;
GRANT ALL PRIVILEGES ON dashboard_nodejs.*
TO 'root'@'%' IDENTIFIED BY 'password'
WITH GRANT OPTION;
Finally, my server attemps to establish the connection with the following parameters:
var con = mySql.createConnection({
host: "db",
user: "root",
password: "password",
database: "dashboard_nodejs"
});
I have no clue why the connection is refused by mysql even with (what looks to me like) the right credentials.
I apologize in advance if this particular case has already been discussed.
mysql node.js docker
Before marking this post as a duplicate note that I've already looked at the other related posts here and pretty much everywhere I could without finding a solution to my precise case. I just keep getting confused between docker-compose.yml
versions and linking the ports to each other.
Here's the issue:
I've created two containers with Docker, one hosting a NodeJS server, one hosting a MySQL database.
My docker-compose.yml looks like this:
version: '3'
services:
server:
build: ./server/
ports:
- "8080:8080"
depends_on:
- db
db:
build: ./db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: dashboard_nodejs
MYSQL_USER: root
MYSQL_PASSWORD: password
client:
image: angular_app
build: ./front/
ports:
- "4242:80"
depends_on:
- server
When running docker-compose up
, all of my apps are built and run without an issue until the server tries to connect to MySQL, exiting with :
Error: connect ECONNREFUSED 172.20.0.2:3306 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)
The dockerfile for my database only contains
FROM mysql
COPY init_db.sql /docker-entrypoint-initdb.d/
and init_db.sql currently is
CREATE DATABASE IF NOT EXISTS dashboard_nodejs;
GRANT ALL PRIVILEGES ON dashboard_nodejs.*
TO 'root'@'%' IDENTIFIED BY 'password'
WITH GRANT OPTION;
Finally, my server attemps to establish the connection with the following parameters:
var con = mySql.createConnection({
host: "db",
user: "root",
password: "password",
database: "dashboard_nodejs"
});
I have no clue why the connection is refused by mysql even with (what looks to me like) the right credentials.
I apologize in advance if this particular case has already been discussed.
mysql node.js docker
mysql node.js docker
edited Nov 11 at 19:53
asked Nov 11 at 19:47
ilomax
148114
148114
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
Add ports: "3306:3306"
to the db service.
I've tested that, this is the result:ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint <db>: Error starting userland proxy: Bind for 0.0.0.0:3306: unexpected error Permission denied
– ilomax
Nov 11 at 19:58
What OS do you use? Can you try to run itpriviledged: true
Don't do it permanently, just try out, because it is a security risk.
– lependu
Nov 11 at 20:03
I'm running Windows 10 Pro. Where am I supposed to add that attributeprivileged
attribute ?
– ilomax
Nov 11 at 20:51
To the db service right after the build line. Also are You sure, that no previous container uses the 3306 port? check it withdocker ps -a
– lependu
Nov 11 at 20:53
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53252551%2fconnecting-a-nodejs-container-to-a-mysql-database%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
Add ports: "3306:3306"
to the db service.
I've tested that, this is the result:ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint <db>: Error starting userland proxy: Bind for 0.0.0.0:3306: unexpected error Permission denied
– ilomax
Nov 11 at 19:58
What OS do you use? Can you try to run itpriviledged: true
Don't do it permanently, just try out, because it is a security risk.
– lependu
Nov 11 at 20:03
I'm running Windows 10 Pro. Where am I supposed to add that attributeprivileged
attribute ?
– ilomax
Nov 11 at 20:51
To the db service right after the build line. Also are You sure, that no previous container uses the 3306 port? check it withdocker ps -a
– lependu
Nov 11 at 20:53
add a comment |
up vote
0
down vote
Add ports: "3306:3306"
to the db service.
I've tested that, this is the result:ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint <db>: Error starting userland proxy: Bind for 0.0.0.0:3306: unexpected error Permission denied
– ilomax
Nov 11 at 19:58
What OS do you use? Can you try to run itpriviledged: true
Don't do it permanently, just try out, because it is a security risk.
– lependu
Nov 11 at 20:03
I'm running Windows 10 Pro. Where am I supposed to add that attributeprivileged
attribute ?
– ilomax
Nov 11 at 20:51
To the db service right after the build line. Also are You sure, that no previous container uses the 3306 port? check it withdocker ps -a
– lependu
Nov 11 at 20:53
add a comment |
up vote
0
down vote
up vote
0
down vote
Add ports: "3306:3306"
to the db service.
Add ports: "3306:3306"
to the db service.
answered Nov 11 at 19:55
lependu
669314
669314
I've tested that, this is the result:ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint <db>: Error starting userland proxy: Bind for 0.0.0.0:3306: unexpected error Permission denied
– ilomax
Nov 11 at 19:58
What OS do you use? Can you try to run itpriviledged: true
Don't do it permanently, just try out, because it is a security risk.
– lependu
Nov 11 at 20:03
I'm running Windows 10 Pro. Where am I supposed to add that attributeprivileged
attribute ?
– ilomax
Nov 11 at 20:51
To the db service right after the build line. Also are You sure, that no previous container uses the 3306 port? check it withdocker ps -a
– lependu
Nov 11 at 20:53
add a comment |
I've tested that, this is the result:ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint <db>: Error starting userland proxy: Bind for 0.0.0.0:3306: unexpected error Permission denied
– ilomax
Nov 11 at 19:58
What OS do you use? Can you try to run itpriviledged: true
Don't do it permanently, just try out, because it is a security risk.
– lependu
Nov 11 at 20:03
I'm running Windows 10 Pro. Where am I supposed to add that attributeprivileged
attribute ?
– ilomax
Nov 11 at 20:51
To the db service right after the build line. Also are You sure, that no previous container uses the 3306 port? check it withdocker ps -a
– lependu
Nov 11 at 20:53
I've tested that, this is the result:
ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint <db>: Error starting userland proxy: Bind for 0.0.0.0:3306: unexpected error Permission denied
– ilomax
Nov 11 at 19:58
I've tested that, this is the result:
ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint <db>: Error starting userland proxy: Bind for 0.0.0.0:3306: unexpected error Permission denied
– ilomax
Nov 11 at 19:58
What OS do you use? Can you try to run it
priviledged: true
Don't do it permanently, just try out, because it is a security risk.– lependu
Nov 11 at 20:03
What OS do you use? Can you try to run it
priviledged: true
Don't do it permanently, just try out, because it is a security risk.– lependu
Nov 11 at 20:03
I'm running Windows 10 Pro. Where am I supposed to add that attribute
privileged
attribute ?– ilomax
Nov 11 at 20:51
I'm running Windows 10 Pro. Where am I supposed to add that attribute
privileged
attribute ?– ilomax
Nov 11 at 20:51
To the db service right after the build line. Also are You sure, that no previous container uses the 3306 port? check it with
docker ps -a
– lependu
Nov 11 at 20:53
To the db service right after the build line. Also are You sure, that no previous container uses the 3306 port? check it with
docker ps -a
– lependu
Nov 11 at 20:53
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53252551%2fconnecting-a-nodejs-container-to-a-mysql-database%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown