我正在尝试在生产模式下在docker容器中运行一个create-react-app项目。我有以下Dockerfile。
circle xs = let trim ys = zipWith const ys xs
in trim . map trim . iterate tail . cycle $ xs
*Main> circle "abc"
["abc","bca","cab"]
每次运行此容器时,我得到FROM node:10
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
RUN npm install serve
RUN yarn global add serve
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 5000
CMD serve -s build
,但端口5000上什么也没有显示。任何建议将不胜感激。
答案 0 :(得分:1)
您正在容器中运行Web服务器。它在端口上侦听。您需要知道端口,然后发布它。
例如,您发现您的Web服务器侦听端口5000。然后,您可以使用命令行参数docker run -p 5000:5000
EXPOSE
不会发布端口,它只会在容器内记录一些元信息,docker run -P
可以使用此信息。大写的'P'
表示:请发布所有暴露的端口。很少这样做,因此EXPOSE
的使用更像是DOCKERFILE
用户对您希望他们进行的docker run -p XXXX:YYYY
端口发布的提示。