sh 用于在Docker容器中运行本地Node项目的个人备忘单
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh 用于在Docker容器中运行本地Node项目的个人备忘单相关的知识,希望对你有一定的参考价值。
## Additional information
* [Dockerizing a Node.js web app](https://nodejs.org/en/docs/guides/nodejs-docker-webapp/)
* [NodeUp Docker podcast episode](http://nodeup.com/ninetyeight)
* [Node Dockerhub images](https://hub.docker.com/_/node/) - list of Docker images with different Node versions
* [Docker cheat sheet](https://github.com/wsargent/docker-cheat-sheet)
* [fuge](https://github.com/apparatus/fuge) - Node microservices and sites with nice development workflow
- [Microservices with fuge](https://glebbahmutov.com/blog/microservices-with-fuge/) - my blog post showing local development workflow
* [Run Node in a docker container with file access](https://gist.github.com/bahmutov/448f73b49914d1981643)
# simple docker file
# assumes located in the same folder as the application itself
# start with node 5 base image
FROM node:5.0
# Create an app directory (in the Docker container)
RUN mkdir -p /usr/src/demo-server
WORKDIR /usr/src/demo-server
# Copy .npm settings and package.json into container
COPY package.json /usr/src/demo-server
COPY .npmrc /usr/src/demo-server
# and install dependencies
RUN npm install
# Copy our source into container
COPY src /usr/src/demo-server/src
COPY server.js /usr/src/demo-server
# If our server uses 1337 by default
# expose it from Docker container
EXPOSE 1337
# Finally start the container command
CMD ["node", "server.js"]
# See list of docker virtual machines on the local box
$ docker-machine ls
NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v1.9.1
# Note the host URL 192.168.99.100 - it will be used later!
# Build an image from current folder under given image name
$ docker build -t gleb/demo-app .
# see list of build images
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
gleb/demo-app latest 506bf31537d4 17 minutes ago 904.5 MB
node 5.0 c4f955829812 10 weeks ago 642.2 MB
# Note both the original Node:5 and the built images are there
# Let us run the image under name 'demo'
$ docker run --name demo -p 5000:1337 -d gleb/demo-app
9f9f3ae62038805504c3c23cce4e9229008ba6bd9ea16b560a7a9e1cfa932e57
# Note: you can pass environment variable values to the `docker run` command
# docker run -e USER=name
# or, if the USER is already an environment var
# docker run -e USER
# or put all env variables into a file and pass its name
# docker run --env-file=<filename>
# You can check all the options passed into the running container
# docker inspect demo
# It prints the long container ID, but we can use our name "demo"
# We also mapped outside port 5000 to container's exposed port 1337
# Let us see running containers
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f9f3ae62038 gleb/demo-app "node server.js" About a minute ago Up About a minute 0.0.0.0:5000->1337/tcp demo
# Let us make a dummy request to the app running inside the container
# We will use the virtual machine's IP and outside port 5000
$ curl 192.168.99.100:5000
Not Found
# Let us see the app's console log to confirm that it has received our request
$ docker logs demo
listening on port 1337 { subdomainOffset: 2, proxy: false, env: 'development' }
started server
<-- GET /
--> GET / 404 6ms -
# Jump into the running container to run any commands
# -i option means bind STDIO from the current shell
docker exec -it demo bash
root@9f9f3ae62038:/usr/src/demo-server# ls
... list of files
root@9f9f3ae62038:/usr/src/demo-server# exit
# If you want to quickly list files in the docker container (default folder)
# you can use `docker exec`
$ docker exec -t demo ls
# ... list of files in /usr/src folder
# We can even copy files from the container back into our system
docker cp demo:/usr/src/demo-server/file.txt file.txt
# look at file.txt locally
# Nice!
# To stop the running container
$ docker stop demo
以上是关于sh 用于在Docker容器中运行本地Node项目的个人备忘单的主要内容,如果未能解决你的问题,请参考以下文章
markdown 用于在Docker容器中运行本地Node项目的个人备忘单
无法使用 node:alpine 在 Docker 容器中运行 React 应用程序的开发版本