docker部署node

263 阅读3分钟

1.docker安装

yum install -y docker   安装docker命令

安装成功以后,编辑/etc/docker/daemon.json文件,配置国内镜像加速。 这里用到的是阿里云提供的加速服务,需要登录https://dev.aliyun.com/来获取个人专属的加速地址。这里假设加速地址是https://4da6b0g8.mirror.aliyuncs.com

vim /etc/docker/daemon.json

编写以下内容:

{
“registry-mirrors”: [“https://4da6b0g8.mirror.aliyuncs.com“]
}

修改完配置文件应该重启服务。

docker restart   重启docker容器
docker images    查看镜像
docker rmi       删除镜像
3.拉取Node镜像

拉取Node镜像

docker pull node:9.2.0

等待镜像拉取成功,可以查看下我们已经有的镜像:

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/node      9.2.0               c1d02ac1d9b4        3 weeks ago         675.6 MB
node                9.2.0               c1d02ac1d9b4        3 weeks ago         675.6 MB
4.部署项目代码

进入/home目录,从github上拉取项目代码:

cd /home
git clone https://gitee.com/Rockwc/rockwc-technical.git
git branch
git remote –v  
git remote add origin https://gitee.com/Rockwc/rockwc-technical.git
git fetch origin
git status
git pull origin develop1.0
git add .
git commit -m " 提交的message"
git reset --hard FETCH_HEAD  冲突之后还原本地,再git pull拉取代码

这里的github地址要换成自己地址。

5.编写Dockerfile文件

Dockerfile文件里是一条条能被Linux执行的命令,docker能根据该文件构建镜像。 该文件必须和项目文件放在一起,一般放在项目根目录下,本例中即/home/hello目录下。

cd hello
vim Dockerfile
# 基础镜像为node,版本为v9.2.0
FROM node:9.2.0
# 镜像作者,可以附加联系信息
MAINTAINER Taylor

# 创建容器内的项目存放目录
RUN mkdir -p /home/nodeapp
WORKDIR /home/nodeapp

#  将Dockerfile当前目录下所有文件拷贝至容器内项目目录并安装项目依赖
COPY . /home/nodeapp
RUN npm install

# 容器对外暴露的端口号,要和node项目配置的端口号一致
EXPOSE 3000

# 容器启动时执行的命令
ENTRYPOINT ["npm", "run"]
# CMD [ "node", "app.js" ]
# CMD [ "node", "./bin/www.js" ]
# CMD npm run dev
CMD ["dev"]
6.构建镜像

在项目根目录下执行命令构建对象:

docker build -t hello .

屏幕会按照Dockerfile内的指令一条条执行并显示在屏幕上。 构建完成,查看已有的镜像。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello               latest              b753dcb8208d        4 hours ago         675.6 MB
docker.io/node      9.2.0               c1d02ac1d9b4        3 weeks ago         675.6 MB
node                9.2.0               c1d02ac1d9b4        3 weeks ago         675.6 MB
7.运行容器

通过镜像hello创建一个容器并运行:

docker run -d --name hello -p 80:3005 hello

给容器换一个名字, 比如说 docker run -it --name=mycentos2 centos:7 /bin/bash
查询当前容器:docker container ls -all
删除当前容器:docker container rm mycentos(提示: 这一步要确定删除容器没问题的情况下, 才可以做)

docker run的容器状态是Exited,docker logs budnode

-d表示容器会在后台运行;--name 是我们给容器起的名字,这个名字是唯一的;-p表示端口映射,即将容器内的3000端口映射到宿主机器的80端口上,这样外部就可以通过80端口来访问容器内部运行的应用了。

执行命令查看容器的状态:

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS                  NAMES
748be4cfccd9        hello               "node app.js"       25 seconds ago      Up 25 seconds                 0.0.0.0:80->3000/tcp   hellocontainer

此时,node应用已经在容器内跑起来了。我们可以访问了。

ps –ef | grep nginx    nginx进程
终止一个运行中的容器    docker stop $CONTAINER_ID
杀死所有正在运行的容器    docker kill $(docker ps -a -q)
删除所有已经停止的容器    docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像   docker rmi $(docker images -q -f dangling=true)
删除所有镜像             docker rmi $(docker images -q)
强制删除镜像名称中包含“doss-api”的镜像   docker rmi --force $(docker images | grep budvue | awk '{print $3}')
删除所有未使用数据        docker system prune
只删除未使用的volumes    docker volume prune
本地访问

打开本地的浏览器,输入云服务器的外网IP即可访问