Javascript 通过docker compose将环境传递给db
我在通过docker compose传递环境时遇到问题,下面是我的代码: docker-compose.ymlJavascript 通过docker compose将环境传递给db,javascript,typescript,docker,docker-compose,Javascript,Typescript,Docker,Docker Compose,我在通过docker compose传递环境时遇到问题,下面是我的代码: docker-compose.yml version: '3.7' services: app: build: context: . dockerfile: Dockerfile volumes: - .:/usr/src/app - /usr/src/app/node_modules ports: - 8080:8080 e
version: '3.7'
services:
app:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- 8080:8080
expose:
- '8080'
command: npm run start
environment:
MYSQL_HOST: ${MYSQL_HOST}
MYSQL_PORT: ${MYSQL_PORT}
MYSQL_USERNAME: ${MYSQL_USERNAME}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
Dockerfile
FROM node:12.17-alpine as builder
WORKDIR /build
COPY package*.json ./
RUN npm install
COPY . .
RUN npm build
CMD [ "npm", "run", "start"]
db.config
host: process.env.MYSQL_HOST,
port: process.env.MYSQL_PORT ? +process.env.MYSQL_PORT : 3306,
username: process.env.MYSQL_USERNAME,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
我通过MYSQL\u HOST=MYSQL\u PORT=MYSQL\u USERNAME=MYSQL\u PASSWORD=MYSQL\u DATABASE=docker compose up-d启动docker compose
为什么在成功构建我的应用程序后,从构建映像的docker控制台中,我会出现如下错误:
[Nest] 36 - 05/05/2021, 6:03:46 PM [ExceptionHandler] connect ECONNREFUSED 127.0.0.1:3306 +2ms
Error: connect ECONNREFUSED 127.0.0.1:3306
我向xaamp上的本地数据库提供了正确的凭据,如“localhost”、“root”等,但这在docker上不起作用:/
有人能告诉我怎么了吗
谢谢你的帮助 在我看来,您是在告诉它在
localhost
找到您自己,但是从您的容器内部看,localhost
表示容器本身,而不是您的主机系统
如果您不使用linux,请尝试
MYSQL\u DATABASE=host.docker.internal
(我还没试过)
如果您使用的是linux,请尝试使用MYSQL\u DATABASE=172.17.0.1
(我刚刚试着卷曲我的主机,它完全可以正常工作)你是说你在
MYSQL\u host=MYSQL\u PORT=MYSQL\u USERNAME=MYSQL\u PASSWORD=MYSQL\u DATABASE=docker compose-d中填写值,还是这样写的?我填e.q,MYSQL\u HOST=localhost MYSQL\u PORT=3306 MYSQL\u USERNAME=root MYSQL\u PASSWORD=MYSQL\u DATABASE=test\u db docker compose up-d