使用docker-composedocker化节点快速应用程序

我有一个节点应用程序,我可以使用npm run本地npm run 。 它使用express作为服务器,并使用浏览器同步来显示热重新加载。

Express正在使用端口6001
Browsersync使用端口30003001

Docker文件

 FROM node/argon WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm install ENV PATH /usr/src/app/node_modules/.bin:$PATH USER app COPY . /usr/src/app RUN sudo chown -R app /usr/src/app RUN npm start EXPOSE 6001 CMD ["npm", "start"] 

泊坞窗,compose.yml

 web: extends: file: docker-compose-base.yml service: web ports: - "6001:6001" environment: VIRTUAL_HOST: testing.docker 

搬运工-撰写-base.yml

 web: build: . command: npm start volumes: - .:/usr/src/app - /usr/src/app - /usr/src/app/node_modules 

我可以运行docker-compose build ,并且构build得很好,运行docker-compose up吐出以下内容:

 [BS] Access URLs: ---------------------------- Local: http://localhost:3000 ---------------------------- UI: http://localhost:3001 ---------------------------- Listening on http://localhost:6001 

但是访问http://testing.docker就好像容器从未挂载过。 运行docker-compose ps显示没有容器,但运行docker ps显示容器可用。

我完全不知所措

我假设你有一个“testing.docker”主机条目设置在你的浏览器可以parsing的地方,把这个条目的格式改为:

 environment: - VIRTUAL_HOST=testing.docker 

您还需要公开端口3000和3001以使浏览器同步工作:

 ports: - "6001:6001" - "3000:3000" - "3001:3001" 

如上所述,如果要分离容器以在后台运行它们,请使用docker-compose up -d 。 如果您在检查docker-compose ps而不分离的同一terminal窗口中退出输出,则容器将不会运行。 如果您在单独的窗口中检查,请确保您位于正确的目录中和/或在撰写命令中使用了--project-name

我错过了这个等式的一个关键部分:我正在使用小艇来pipe理集装箱,它需要一个港口前往。

所以这个文件改变看起来像这样:

Dockerfile

 FROM node/argon RUN echo 08-03-2016 > last_docker_cache_bust EXPOSE 6001 WORKDIR /usr/src/app COPY package.json .npmrc* /usr/src/app/ RUN npm install ENV PATH /usr/src/app/node_modules/.bin:$PATH ADD . /usr/src/app RUN sudo chown -R app /usr/src/app 

泊坞窗,compose.yml

 web: extends: file: docker-compose-base.yml service: web ports: # The first port is managed by dinghy, the second is the app's running port for express - "7510:6001" environment: VIRTUAL_HOST: testing.docker