【发布时间】:2020-08-31 19:03:55
【问题描述】:
我有一个使用 gridsome 构建的静态网站,我正在尝试使用 docker 容器化,并提出了以下 Dockerfile:
FROM node:14.2.0-alpine3.10
RUN apk update && apk upgrade
RUN apk --no-cache add git g++ gcc libgcc libstdc++ linux-headers make python yarn
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
USER node
RUN npm i --global gridsome
RUN yarn global add serve
COPY --chown=node:node gridsome-website/ /home/node/build/
RUN echo && ls /home/node/build/ && echo
WORKDIR /home/node/build
USER node
RUN npm cache clean --force
RUN npm clean-install
# My attempt to serve the website from within, build is successful but serve command doesn't work
CMD ~/.npm-global/bin/gridsome build && serve -d dist/
Gridsome默认使用8080端口,运行容器后通过:
docker run --name my-website -d my-website-image
它没有失败,但我无法使用链接访问我的网站:http://localhost:8080,容器在我运行后立即停止执行。我尝试通过以下方式从容器中复制 ``` dist/`` 文件夹:
$ docker cp my-website:/home/node/build/dist ./dist
然后使用以下命令从终端手动提供服务:
$ serve -d dist/
它在终端工作,但为什么它在容器内失败?
【问题讨论】:
-
Gridsome默认使用8080端口,这就是为什么
-
docker run --expose 8080 -p 8080:8080 ...? -
不起作用,这不是我想要在这里实现的目标
-
试图复制 docker 构建但出现错误,您能否链接一个最小可复制示例? - 谢谢
标签: node.js docker npm dockerfile gridsome