我跟随this section为我的vuejs应用程序创建了一个docker镜像。我可以在开发模式下使用localhost http://localhost:8081
访问后端应用程序(春季启动)。我无法从dockerized vuejs应用程序访问它。它使用OPTIONS方法调用URL,并返回(失败)状态。我已经在后端应用程序中实现了cors过滤器。
我使用docker build -t vuejs/frontend .
构建图像并使用
docker run -td -p 8082:80 --rm --name frontend vuejs/frontend
。我可以访问我的主页。如果在--net="host"
命令中设置了docker run ...
,则无法访问主页。我究竟做错了什么?如何成功调用我的后端api?
Dockerfile:
# build stage
FROM node:9.11.1-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# production stage
FROM nginx:1.13.12-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
server.js
const express = require('express');
const serveStatic = require('serve-static');
app = express();
app.use(serveStatic('./dist'));
const port = process.env.PORT || 8082;
app.listen(port);
console.log('server started ', port);
Docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6727648105dc vuejs/frontend "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes frontend
221c6554f99e java/backend "java -Djava.securit…" 3 minutes ago Up 3 minutes backend
73d29d1e1986 database/phoenix_hbase:4.10.0 "/bin/sh -c /opt/hba…" 3 hours ago Up 3 hours 0.0.0.0:2181->2181/tcp, 0.0.0.0:60000->60000/tcp, 0.0.0.0:60010->60010/tcp, 0.0.0.0:60020->60020/tcp, 0.0.0.0:60030->60030/tcp docker-hbase