Docker 容器中的 Npm run serve

Posted

技术标签:

【中文标题】Docker 容器中的 Npm run serve【英文标题】:Npm run serve in Docker container 【发布时间】:2021-10-03 21:48:53 【问题描述】:

我刚刚学习了 Docker。

我下载了 ubuntu 18.04 镜像文件。

nodejsnpm 安装在容器中。

在我安装了所需的包之后,npm install

使用npm run serve

mac外网看不到localhost:8080。

我根据以下信息执行 Google 搜索。

It seems you are running Vue CLI inside a container.
Access the dev server via http://localhost:<your container's external mapped port>/

但是我看到大家都用docker文件。

因为我刚学过docker,对docker文件了解不多。

希望进入容器后npm run serve可以被外部访问,怎么办?

docker exec -it 858ba945a7386a7b318587ea35d903fb78b5bc6324d3bbc14c2969d7974ea44d /bin/bash 

【问题讨论】:

这里的内容太多了。但是,您必须从 dockerfile 开始。使用它来配置您的容器。当你运行它时,你必须公开你想从你的主机访问的端口。你离能够正确使用它还很远。 您想使用容器进行开发还是部署? 我现在只是在开发阶段,所以我想用最简单的方法来实现它。 Docker 有一个 Sample application 教程,其中介绍了 Dockerfile 系统(甚至还有一个 Node 应用程序)。正如@SoftwareEngineer 所说,这基本上是使用 Docker 的必要部分。 【参考方案1】:

第一

直接使用官方node:&lt;version&gt;图片,而不是ubuntu或其他S.O。图片。 最佳做法是修复版本。

Node 镜像包含 node、npm 和 S.O.环境。

第二

如果您使用 Docker Compose,则在 docker-compose.yml 中,您必须像这样映射您的 服务 的端口(其中包含 node 图像):

ports:
   - "8080:8080" 

第一个是您从浏览器调用的 (http://localhost:8080)。

(忽略最终单独的 nginx/webserver 容器)。

如果您直接使用 Docker,您可以使用 -p 选项运行命令,如下所示:

docker run -p 8080:8080 <container>

【讨论】:

【参考方案2】:

你必须添加端口映射see docs

-p 8080:8080 将容器中的 TCP 端口 80 映射到 Docker 主机上的端口 8080。

【讨论】:

docker -p 8080:8080 exec -it 858ba945a7386a7b318587ea35d903fb78b5bc6324d3bbc14c2969d7974ea44d /bin/bash??那行不通

以上是关于Docker 容器中的 Npm run serve的主要内容,如果未能解决你的问题,请参考以下文章

vue项目启动时,npm run serve 和 npm run dev 的区别

vue项目启动时,npm run serve 和 npm run dev 的区别

npm run dev/build/serve

#npm run serve 指定临时启用端口 #vue指定临时启用端口

vue执行npm run serve卡死

Vuenpm run serve 和 npm run dev 有什么区别