无法连接 docker 个容器
Unable to connect with docker container
我有一个服务器-api 应用程序。
在我的本地主机上,我只需要 2 个命令来启动应用程序:
- npm 安装
- npm 启动
没有了,在3000端口完美运行
我正在尝试 docker 调整我的服务器以使用 docker-compose 启动它。
好的,这是我的docker文件:
FROM node:14-alpine AS development
ENV NODE_ENV development
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
我启动构建命令来构建镜像:
docker build --tag server-api .
完成后,我 运行 容器:
docker run -p 80:3000 server-api
日志是完美的,它说 运行ning 在端口 3000 中,我应该连接到 localhost:3000 以检查我的服务器-api 应用程序。
但是,我不明白那是容器的端口,我已经用命令 -p 80:3000 启动了容器,所以我检查了我电脑的端口 80...但是没有任何反应。
我应该如何排除故障?
我已经尝试获取一些与我的容器连接的信息:
docker exec -it <container_id> sh
但一切看起来都很完美,而且是一个简单的应用程序。
我做错了什么?
正如@ErikMD 所说,所有后端应用程序都需要侦听特殊 IP 0.0.0.0 才能进行 dockerized(React 不会发生此问题)。
我需要阅读这个 post:https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
为了解决我的问题,我检查了如何将本地主机更改为 0.0.0.0 作为主机。
默认我的主机是本地主机。
所以,我在 package.json 中更改了这个:
"scripts": {
"start": "json-server --watch db.json"
},
为此:
"scripts": {
"start": "json-server --host 0.0.0.0 --port 8080 --watch db.json"
},
现在终于完美了。
我有一个服务器-api 应用程序。
在我的本地主机上,我只需要 2 个命令来启动应用程序:
- npm 安装
- npm 启动
没有了,在3000端口完美运行
我正在尝试 docker 调整我的服务器以使用 docker-compose 启动它。
好的,这是我的docker文件:
FROM node:14-alpine AS development
ENV NODE_ENV development
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
我启动构建命令来构建镜像:
docker build --tag server-api .
完成后,我 运行 容器:
docker run -p 80:3000 server-api
日志是完美的,它说 运行ning 在端口 3000 中,我应该连接到 localhost:3000 以检查我的服务器-api 应用程序。
但是,我不明白那是容器的端口,我已经用命令 -p 80:3000 启动了容器,所以我检查了我电脑的端口 80...但是没有任何反应。
我应该如何排除故障?
我已经尝试获取一些与我的容器连接的信息:
docker exec -it <container_id> sh
但一切看起来都很完美,而且是一个简单的应用程序。
我做错了什么?
正如@ErikMD 所说,所有后端应用程序都需要侦听特殊 IP 0.0.0.0 才能进行 dockerized(React 不会发生此问题)。
我需要阅读这个 post:https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
为了解决我的问题,我检查了如何将本地主机更改为 0.0.0.0 作为主机。
默认我的主机是本地主机。
所以,我在 package.json 中更改了这个:
"scripts": {
"start": "json-server --watch db.json"
},
为此:
"scripts": {
"start": "json-server --host 0.0.0.0 --port 8080 --watch db.json"
},
现在终于完美了。