VueJs docker 图像未在浏览器中加载
VueJs docker image not loading in the browser
问题:(已编辑:解决方案已添加到此 post 的末尾)
我有 VueJS 项目(在 webpack 中开发),我想要 docker-size。
我的 Dockerfile 看起来像:
FROM node:8.11.1 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["npm", "run", "dev"]
这基本上是遵循 this post 的流程。
我还有一个 .dockerignore 文件,我从 .gitignore 复制了相同的文件,它看起来像:
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
.git/
我已经使用以下命令创建了一个 docker 图像:
docker build -t test/my-image-name .
然后 运行 使用以下命令将其放入容器中:
docker run -it -p 8080:8080 --rm --name my-container-name test/my-image-name
作为最后一条命令的结果,我在终端中得到了与我在本地 运行 应用程序时相同的输出(通常在使用 webpack / vuejs 调试的情况下显示):
BUT: 最后,在浏览器中 window the app is not loaded
如果我 运行 命令 docker images
和 docker ps
我可以看到图像和容器在那里,并且在创建它们时,我没有收到任何错误消息。
我找到 并尝试将 Dockerfile 更改为:
选项 1
FROM node:8.11.1 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
ENTRYPOINT ["ng", "serve", "-H", "0.0.0.0"]
选项 2
FROM node:8.11.1 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ENTRYPOINT ["ng", "serve", "-H", "0.0.0.0"]
EXPOSE 8080
CMD ["npm", "run", "dev"]
但似乎有 none 个在工作。
顺便说一句。我的 package.json 文件看起来像:
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js"
}
所以我想知道: 如何让应用程序从 docker 图片在浏览器中打开?
解决方案: 不是,确定这是否是修复的原因,但我做了两件事。如前所述,我正在使用 VueJS 和 webpack,所以在名为 config/index.js
的文件中,最初看起来像:
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// Various Dev Server settings
host: 'localhost', // <---- this one
port: 8080,
我将 host
属性 从 'localhost'
更改为 '0.0.0.0'
,从 Docker 文件中删除了 EXPOSE 8080
行(初始Docker 文件来自我上面的问题)因为我注意到默认情况下使用配置文件中的端口并且还重新启动了我本地机器上安装的 Docker 工具。
问题:(已编辑:解决方案已添加到此 post 的末尾)
我有 VueJS 项目(在 webpack 中开发),我想要 docker-size。
我的 Dockerfile 看起来像:
FROM node:8.11.1 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["npm", "run", "dev"]
这基本上是遵循 this post 的流程。
我还有一个 .dockerignore 文件,我从 .gitignore 复制了相同的文件,它看起来像:
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
.git/
我已经使用以下命令创建了一个 docker 图像:
docker build -t test/my-image-name .
然后 运行 使用以下命令将其放入容器中:
docker run -it -p 8080:8080 --rm --name my-container-name test/my-image-name
作为最后一条命令的结果,我在终端中得到了与我在本地 运行 应用程序时相同的输出(通常在使用 webpack / vuejs 调试的情况下显示):
BUT: 最后,在浏览器中 window the app is not loaded
如果我 运行 命令 docker images
和 docker ps
我可以看到图像和容器在那里,并且在创建它们时,我没有收到任何错误消息。
我找到
选项 1
FROM node:8.11.1 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
ENTRYPOINT ["ng", "serve", "-H", "0.0.0.0"]
选项 2
FROM node:8.11.1 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ENTRYPOINT ["ng", "serve", "-H", "0.0.0.0"]
EXPOSE 8080
CMD ["npm", "run", "dev"]
但似乎有 none 个在工作。
顺便说一句。我的 package.json 文件看起来像:
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js"
}
所以我想知道: 如何让应用程序从 docker 图片在浏览器中打开?
解决方案: 不是,确定这是否是修复的原因,但我做了两件事。如前所述,我正在使用 VueJS 和 webpack,所以在名为 config/index.js
的文件中,最初看起来像:
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// Various Dev Server settings
host: 'localhost', // <---- this one
port: 8080,
我将 host
属性 从 'localhost'
更改为 '0.0.0.0'
,从 Docker 文件中删除了 EXPOSE 8080
行(初始Docker 文件来自我上面的问题)因为我注意到默认情况下使用配置文件中的端口并且还重新启动了我本地机器上安装的 Docker 工具。