node+vue项目docker、docker compose及docker swarm集群模式启动 清疚 2023-06-27 12:53 1阅读 0赞 一下介绍基于node独立运行的vue前段项目Dockerfile 配置及启动 模式一、docker直接启动 项目根目录下创建Dockerfile文件。 #指定依赖镜像为node并制定版本,2020-1-7最新未定版本为12.13.1 FROM docker.io/node:12.13.1 # Create app directory WORKDIR /usr/src/vueappdev # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied # where available (npm@5+) COPY package*.json ./ # 同步时区设置 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone #设置node源地址为淘宝源 RUN npm config set registry http://registry.npm.taobao.org/ #无需每次运行,灵活使用 RUN npm install # If you are building your code for production # RUN npm ci --only=production # Bundle app source COPY . . #指定暴露端口号,此处应与项目配置中的端口号一直 EXPOSE 8080 #指定项目运行指令为 npm run prod CMD [ "npm", "run", "prod" ] 运行命令: #在项目根目录下执行一下命令 #生成docker镜像,镜像名为erms/web,注意命令结尾有个点 docker build -t erms/web . #运行erms/web镜像,绑定容器的 8080 端口,将其映射到本地主机 127.0.0.1 的 9527 端口上,对外访问使用9527。 docker run -p 9527:8080 --name ermsweb -d erms/web 命令释义: 例如:docker run -itd -p 9527:8080 -v /user/local/ermsweb:/workspace --name ermsweb --restart=always erms/web 这里的/user/local/ermsweb是你的vue项目路径 -i: 以交互模式运行容器,通常与 -t 同时使用; -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; -it的意思是,用一个终端跟容器进行交互; -p: 端口映射,格式为:主机(宿主)端口:容器端口 -d: 后台运行容器,并返回容器ID; --name="": 为容器指定一个名称; --restart=always 表示在容器退出时总是重启容器; 具体解释详见菜鸟教程: https://www.runoob.com/docker/docker-run-command.html docker run -p 9527:8080 --name ermsweb -d erms/web命令将镜像运行起来之后,我们就可以通过宿主机的IP:9527来访问项目了。本地访问即可使用127.0.0.1:9527,云服务器可以用www.xxx.com:9527访问。 模式二、docker-compose 项目根目录下或任意位置创建docker-compose.yml version: '3' services: dev: image: erms/web ports: # 9527绑定宿主机端口,对外访问能使用。8080绑定docker容器端口,即项目端口 - "9527:8080" # restart: always volumes: - /user/local/erms:/workspace stdin_open: true tty: true 切换到docker-compose.yml所在目录(或者执行命令是指定compose文件位置),执行命令。 #生成镜像 docker build -t erms/web . #docker compose命令启动 docker-compose up -d 访问方式与模式一相同。 模式三、docker集群docker swarm/stack模式运行 项目根目录下或任意位置创建docker-compose-ermsweb.yml version: '3.3' services: ermsweb: hostname: ermsweb image: erms/web ports: - target: 8080 published: 9527 mode: host labels: "type": "2" volumes: - /ceph/erms/ui/ERMS_UI:/usr/share/nginx/html networks: - edoc2_default deploy: # placement: # constraints: # - node.labels.nodetype == InDrive # 设置集群个数,这里以单机为例 replicas: 1 restart_policy: condition: on-failure volumes: esdata: driver: local networks: edoc2_default: external: name: indrive_edoc2 #生成镜像,镜像名称应与compose文件中的一致 docker build -t erms/web . #创建docker集群服务,-c指定compose文件的位置,指定集群名称为erms docker stack deploy -c /home/erms/compose/singelton/docker-compose-ermsweb.yml erms 访问方式相同。 集群模式下更新移除服务等操作请移步:[https://blog.csdn.net/CaptainJava/article/details/103869834][https_blog.csdn.net_CaptainJava_article_details_103869834] [https_blog.csdn.net_CaptainJava_article_details_103869834]: https://blog.csdn.net/CaptainJava/article/details/103869834
还没有评论,来说两句吧...