【发布时间】:2020-05-01 14:50:25
【问题描述】:
所以我要去码头集装箱...
我有一个用 Angular 编写的前端应用程序。
带有proxy.conf.json 持有:
/api": {
"target": "http://127.0.0.1:3000",
"secure": false
}
我也加了environment.prod.ts:
export const environment = {
production: true,
api: 'http://127.0.0.1:3000',
};
我的后端终于用 Node.js (Express) 编写了。
在我的app.js:
...
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next()
});
...
当我构建我的应用程序并将前端添加到 Nginx 本地并正确设置配置文件时,PM2 运行后端我的应用程序运行顺利,没有任何问题。
因此,我按照指南和文档为我的前端创建了一个容器。
Dockerfile:
FROM nginx
COPY dist /usr/share/nginx/html
还有一个我的后端容器:
# Install the app dependencies in a full Node docker image
FROM node:10
WORKDIR "/app"
# Install OS updates
RUN apt-get update \
&& apt-get dist-upgrade -y \
&& apt-get clean \
&& echo 'Finished installing dependencies'
# Copy package.json and package-lock.json
COPY package*.json ./
# Install app dependencies
RUN npm install --production
# Copy the dependencies into a Slim Node docker image
FROM node:10-slim
WORKDIR "/app"
# Install OS updates
RUN apt-get update \
&& apt-get dist-upgrade -y \
&& apt-get clean \
&& echo 'Finished installing dependencies'
# Install app dependencies
COPY --from=0 /app/node_modules /app/node_modules
COPY . /app
ENV NODE_ENV production
ENV PORT 3000
USER node
EXPOSE 3000
CMD ["npm", "start"]
所以您可能已经猜到,当我在笔记本电脑上运行这两个容器时(在我完成 docker 构建之后)我可以访问它们中的每一个,但是当我尝试登录时出现 POST ... 404 错误(不是找到)。
如果我在本地运行前端并从容器中运行后端,它就像一个魅力......
我用谷歌搜索了很多,但似乎找不到答案。
感谢您的时间和帮助, 干杯。
编辑
按照我的 Docker 运行命令的要求:
docker run -d -p 3000:3000 myUserName/cis-backend
docker run -d -p 4200:80 myUserName/cis-frontend
【问题讨论】:
-
能否添加docker run命令。看起来你可能没有链接容器或没有正确暴露端口
-
@AvinashReddy,感谢您的快速重播。我刚刚根据您的要求进行了编辑。
标签: node.js angular docker nginx dockerfile