Я пробовал все, что я могу придумать. Я прочитал документы, блоги и попробовал следующие образцы на github.Окружающая среда Node.js dev в Docker на Windows
Но я не могу заставить его работать.
Что я хочу сделать, это просто. Я хочу написать свой код node.js на моем компьютере с Windows 8.1, и я также хочу запустить код из контейнера Docker без необходимости постоянно перестраивать контейнер. Поэтому я хочу сопоставить каталог на моем хосте Windows с каталогом внутри контейнера.
Я создал этот Dockerfile
FROM node:0.10.38
RUN apt-get update -qq && apt-get install -y build-essential
ENV ZMQ_VERSION 4.1.3
ENV LIBSODIUM_VERSION 1.0.3
RUN curl -SLO "https://download.libsodium.org/libsodium/releases/libsodium-$LIBSODIUM_VERSION.tar.gz" \
&& tar xvf libsodium-$LIBSODIUM_VERSION.tar.gz \
&& cd libsodium-$LIBSODIUM_VERSION \
&& ./configure \
&& make \
&& make install \
&& cd .. \
&& rm -r libsodium-$LIBSODIUM_VERSION \
&& rm libsodium-$LIBSODIUM_VERSION.tar.gz
RUN curl -SLO "http://download.zeromq.org/zeromq-$ZMQ_VERSION.tar.gz" \
&& tar xvf zeromq-$ZMQ_VERSION.tar.gz \
&& cd zeromq-$ZMQ_VERSION \
&& ./configure \
&& make \
&& make install \
&& cd .. \
&& rm -r zeromq-$ZMQ_VERSION \
&& rm zeromq-$ZMQ_VERSION.tar.gz
RUN ldconfig
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
RUN mkdir -p /usr/src/app
ADD . /usr/src/app
WORKDIR /usr/src/app
RUN npm install
EXPOSE 3000
EXPOSE 35729
CMD ["npm", "start"]
У меня есть этот простой server.js файл
var express = require('express');
var app = express();
var zmq = require('zmq');
app.get('/', function (req, res) {
res.send('ZMQ: ' + zmq.version);
});
var server = app.listen(3000, function() {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
И этот простой package.json
{
"name": "docker-node-hello-world",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.13.3",
"zmq": "^2.14.0"
}
}
я установил последнюю Докер Toolbox, и можно запустить пример Docker Hello World. Я пытаюсь создать изображение своего докера таким образом, когда я нахожусь в каталоге, где находится мой файл Docker.
docker build -t dockernodetest:dockerfile .
Я затем попытаться запустить его, а также из того же места внутри Докер Quickstart терминала. Я использую хэш, поскольку тег не принимает по каким-либо причинам:
docker run -v //c/Bitbucket/docker-node-hello-world/:/usr/src/app -p 3000:3000 -i -t 9cfd34e046a5 ls ./usr/src/app
Результат этого является пустым каталогом. Я надеялся, что я мог бы просто вызвать
docker run -v //c/Bitbucket/docker-node-hello-world/:/usr/src/app -p 3000:3000 -i -t 9cfd34e046a5 npm start
Но поскольку каталог хост не доступен он выходит из строя. У меня такое ощущение, что я неправильно понял что-то очень основное. Я просто не знаю, что.
Возможно, вы захотите прочитать [Работа с контейнерами] (https://docs.docker.com/v1.8/userguide/usingdocker/), чтобы помочь вам понять, что произошло после каждого шага. Итак, каков вывод при запуске команды 'docker images'? – jeedo
Также есть содержимое «entrypoint».sh' как 'ENTRYPOINT', аргументы будут переданы этому скрипту - см. [ENTRYPOINT] (https://docs.docker.com/v1.8/reference/builder/#entrypoint) – jeedo