无法在 docker 容器中安装 npm?
can't install npm in the docker container?
我正在数字海洋服务器的 docker 平台上部署一个简单的 node.js 应用程序。
// package.json
{
"name": "docker-centos-hello",
"private": true,
"version": "0.0.1",
"description": "Node.js Hello world app on CentOS using docker",
"author": "Daniel Gasienica <daniel@gasienica.ch>",
"dependencies": {
"express": "3.2.4"
}
}
// app.js
var express = require('express');
var PORT = 3000;
var app = express();
app.get('/', function (req, res) {
res.send('Hello world\n');
});
app.listen(PORT);
console.log('Running on http://localhost:' + PORT);
// docker 文件
FROM dockerfile/nodejs
# Set the working directory
WORKDIR /src
EXPOSE 3000
CMD ["/bin/bash"]
docker基础镜像是dockerfile/nodejs,构建了一个node.js,我构建的镜像:
docker build -t test1 /home/sizhe/docker/test
和运行图像:
docker run -it -p 8080:3000 -v /home/sizhe/docker/test1:/src test
通过运行ning镜像,我可以成功的进入容器,app文件都被复制到容器中了。当我尝试安装 node.js 依赖项的命令时:
npm install
但是npm无法下载所有包,报错:
Linux 3.13.0-40-generic
npm ERR! argv "node" "/usr/local/bin/npm" "install"
npm ERR! node v0.10.35
npm ERR! npm v2.1.16
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! syscall getaddrinfo
npm ERR! network getaddrinfo ENOTFOUND
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
确保dns设置正确。 docker
服务重启后,我遇到了一些问题。如果它没有帮助,您可能需要使用 --dns 8.8.8.8
docker 开关。
正在重新启动 docker 服务:
- 在 systemd 架构上 -
sudo systemctl restart docker
- boot2docker -
boot2docker restart
- Docker 机器 -
docker-machine restart <machine_name>
此外,我做了类似的事情(nodejs 图像),但我使用了另一个基础图像,请随意使用我的 repo.
中的任何你需要的东西
我正在数字海洋服务器的 docker 平台上部署一个简单的 node.js 应用程序。
// package.json
{
"name": "docker-centos-hello",
"private": true,
"version": "0.0.1",
"description": "Node.js Hello world app on CentOS using docker",
"author": "Daniel Gasienica <daniel@gasienica.ch>",
"dependencies": {
"express": "3.2.4"
}
}
// app.js
var express = require('express');
var PORT = 3000;
var app = express();
app.get('/', function (req, res) {
res.send('Hello world\n');
});
app.listen(PORT);
console.log('Running on http://localhost:' + PORT);
// docker 文件
FROM dockerfile/nodejs
# Set the working directory
WORKDIR /src
EXPOSE 3000
CMD ["/bin/bash"]
docker基础镜像是dockerfile/nodejs,构建了一个node.js,我构建的镜像:
docker build -t test1 /home/sizhe/docker/test
和运行图像:
docker run -it -p 8080:3000 -v /home/sizhe/docker/test1:/src test
通过运行ning镜像,我可以成功的进入容器,app文件都被复制到容器中了。当我尝试安装 node.js 依赖项的命令时:
npm install
但是npm无法下载所有包,报错:
Linux 3.13.0-40-generic
npm ERR! argv "node" "/usr/local/bin/npm" "install"
npm ERR! node v0.10.35
npm ERR! npm v2.1.16
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! syscall getaddrinfo
npm ERR! network getaddrinfo ENOTFOUND
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
确保dns设置正确。 docker
服务重启后,我遇到了一些问题。如果它没有帮助,您可能需要使用 --dns 8.8.8.8
docker 开关。
正在重新启动 docker 服务:
- 在 systemd 架构上 -
sudo systemctl restart docker
- boot2docker -
boot2docker restart
- Docker 机器 -
docker-machine restart <machine_name>
此外,我做了类似的事情(nodejs 图像),但我使用了另一个基础图像,请随意使用我的 repo.
中的任何你需要的东西