使用 docker 部署 vue3-koa-MongoDB 项目

411 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情

部署 vue3-koa-MongoDB 的项目,需要安装几个环境,node环境,数据库是使用的 MongoDB。下文是详细的安装步骤。

安装 MongoDB

拉取最新镜像

docker pull mongo:latest

创建容器

docker run -itd --name mongo -v ~/docker/mongo:/data/db -p 9011:27017 mongo --auth

参数含义:

  • -v ~/docker/mongo:/data/db 数据映射到宿主服务器(可选)
  • -p 9011:27017 指定端口
  • --auth 使用密码连接(可选)

进入mongo创建数据

docker exec -it mongo mongo

添加一条数据

use test
db.test.insert({name:'xiaoli'})
show dbs

当设置--auth参数后需要设置用户和密码,进入mongo后执行如下命令:

db.createUser({ 
    user:'admin',
    pwd:'123456',
    roles:[{role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]
})

外部访问需要开启远程连接

# 进入容器
docker exec -it mongodb bash

# 更新源
apt-get update

# 安装 vim
apt-get install vim

# 修改 mongo 配置文件
vim /etc/mongod.conf.orig

将其中的bindIp: 127.0.0.1注释掉# bindIp: 127.0.0.1 或者改成bindIp: 0.0.0.0 即可开启远程连接

安装 node

在项目的根目录下创建Dockerfile文件,并填入如下内容:

#制定node镜像的版本
FROM node:14.16.1
#声明作者
MAINTAINER codeniu
#移动当前目录下面的文件到app目录下
ADD . /app/
#进入到app目录下面,类似cd
WORKDIR /app
#安装依赖(docker build 时执行)
RUN npm install
#对外暴露的端口
EXPOSE 3000
# 构建前台项目
CMD ["npm", "build"]
# 容器启动时执行脚本
CMD ["npm", "start"]

Dockerfile 脚本命令说明

  • FROM指定基础镜像文件
  • WORKDIR工作目录的路径
  • COPY拷贝本地文件到容器内
  • RUN在 docker build 时运行命令
  • CMD在 docker run 时运行命令

构建镜像

docker build -t niu-box-serve .

创建容器

docker run \
-d \
-p 8070:3000 \
--restart=unless-stopped \
-v /home/projects/app:/app \
niu-box-serve

#查看容器
docker ps

# 进入容器
docker exec -it <container id> /bin/bash

这里将部署路径 /app 映射到宿主主机的 /home/projects/app 下,便于打包后文件的替换。就不用每次更新后代码重新构建镜像了。

常用命令

在部署过程中不可避免的遇到有些命令忘记的情况,现总结一下docker的常用命令如下:

#查看当前docker版本
docker -v

#查看当前本地所有镜像
docker images

#构造镜像,用法docker build -t 镜像名称 .
docker build -t docker_demo .

#用于容器与主机之间的数据拷贝。用法docker cp 主机文件地址 容器内地址。12d7f14v45cv为容器id。
docker cp /www/runoob 12d7f14v45cv:/www/

#创建一个新的容器并运行,-d为后台执行,-p 9000:3000前面为主机端口,后面是容器端口。docker_demo镜像名
docker run -d -p 9000:3000 docker_demo

#启动已被停止的容器
docker start docker_demo

#关闭已被启动的容器
docker stop docker_demo

#重新启动容器
docker restart docker_demo

#杀掉一个运行中的容器。
docker kill -s KILL docker_demo

#删除一个或多少容器。-f :通过SIGKILL信号强制删除一个运行中的容器-l :移除容器间的网络连接,而非容器本身-v :-v 删除与容器关联的卷
docker rm -f docker_demo、docker_demo1

#在运行的容器中执行命令。104e28f2f072容器id
sudo docker exec -it 104e28f2f072 /bin/bash 

#列出容器。 -a:所有容器包含没有运行的
docker ps 

#获取容器获取容器的日志 104e28f2f072容器id,-t:显示时间戳
docker logs -f -t 104e28f2f072 

#登陆镜像仓库
docker login

#获取镜像
docker pull 

#上传镜像
docker push

#查看指定镜像的创建历史。
docker history docker_demo