我正在尝试用docker创建一个reactjs应用程序,所以我需要暴露我的端口3000,这是我的webpack开发服务器之一。
这是我的Dockerfile:
FROM node:11-alpine
RUN mkdir /app
WORKDIR /app
COPY package.json .
RUN npm i
COPY . .
CMD ["npm", "start"]
npm start
只是一个webpack-dev-server
还有我的docker-compose.yml:
version: '3'
services:
sample-app:
container_name: sample-app
build:
context: .
dockerfile: Dockerfile
volumes:
- '.:/app'
- '/app/node_modules'
ports:
- '3000:3000'
当我去http://localhost:3000/
它不会工作。
在您的docker文件中,您需要公开端口3000.将其添加到CMD行正上方的Dockerfile中
EXPOSE 3000
docker-compose文件中的行将端口3000从主机映射到容器中的端口3000,但如果没有上面的行,则端口3000不会“打开”到主机。
这些文章提供了更多细节:https://medium.freecodecamp.org/expose-vs-publish-docker-port-commands-explained-simply-434593dbc9a3
https://medium.com/@andyccs/webpack-and-docker-for-development-and-deployment-ae0e73243db4(有点过时,但一些很好的信息)
我用它修理了它:https://github.com/webpack/webpack-dev-server/issues/547#issuecomment-284737321
webpack配置的主机应该是'0.0.0.0'而不是'localhost'(就像我的情况一样)