docker - 无法从主机连接到 dockerised Vue CLI 服务
问题描述
我有一个非常基本Dockerfile
的安装Vue CLI
和公开端口8080
:
FROM node
RUN yarn global add @vue/cli
EXPOSE 8080
我有一个docker-compose.yml
将主机端口连接到容器上暴露的端口:
version: '3'
services:
vue:
build:
context: .
dockerfile: ./Dockerfile
volumes:
- .:/home/node
working_dir: '/home/node'
ports:
- '8080:8080'
我运行一个容器,docker-compose run vue bash
然后创建一个 Vue 项目vue create foo
。
在项目文件夹中,我添加了一个vue.config.js
:
module.exports = {
devServer: {
host: '0.0.0.0',
port: 8080
}
}
当我运行开发服务器时,yarn serve
我看到:
App running at:
- Local: http://localhost:8080/
It seems you are running Vue CLI inside a container.
Access the dev server via http://localhost:<your container's external mapped port>/
虽然它显示它是在本地托管的,但这似乎localhost
不是一个已知的显示错误。0.0.0.0
但是,我无法通过http://localhost:8080
主机访问 Vue。
我查看了多个设置此设置的教程,但无法弄清楚为什么我无法访问 Vue 开发服务器。
解决方案
我没有意识到默认情况下docker-compose run
没有设置定义的端口。docker-compose.yml
这可以由docker-compose run --service-ports
.
我已经确定了一个解决方案,我将运行 vue cli 命令和将开发服务器运行到单独的服务中:
version: '3'
services:
vue-cli:
build:
context: .
dockerfile: ./Dockerfile
image: auscert/vue:latest
volumes:
- .:/home/node
working_dir: '/home/node/demo'
command: ['echo', 'Service vue-cli is run only']
vue:
image: auscert/vue:latest
ports:
- '8080:8080'
volumes:
- .:/home/node
working_dir: '/home/node/demo'
command: ['yarn', 'serve']
这让我仍然可以docker-compose run vue-cli
一次性使用并轻松获得外壳,而所有内容的服务都由专门的服务完成。(为服务添加一个echo
作为确保它立即退出一个。)command
vue-cli
docker-compose up
推荐阅读
- c - 如果变量没有初始化,为什么这段 C 代码编译和执行要花这么长时间?
- javascript - 替换除数字、冒号和换行之外的所有内容
- flutter - 如何使用 shared_preferences 库实现 Flutter Riverpod FutureProvider?
- python - 美丽的汤找到包含 div 和 span 的路径文本
- python-3.x - 即使文件中有字母,也要对文件进行数字排序
- java - 如何制作分享按钮
- html - 在动画期间翻转图像
- authentication - 在 mfp 身份验证中甚至会触发 handleChallenge()
- powershell - Powershell 读取文件并比较内容
- python - Setup.py 重新安装已经安装的用户编写的包