资讯专栏INFORMATION COLUMN

Docker打包nodejs项目和数据库

SimonMa / 945人阅读

摘要:你需要新建目录结构初始化的语句如下你的用户名你的镜像这回直接拉取你在上的镜像去掉构建步骤压缩给别人使用命令一键运行数据库项目舒服了

看这篇文章,必须知道基础的docker, 本文只提供思路和部分代码, 不负责教
所有的命令必须谨慎操作!三思而后行
命令

停止所有运行的容器

docker stop $(docker ps -a -q)

删除所有的容器

docker rm $(docker ps -a -q)

使用docker-compose启动容器

docker-compose up -d

使用docker-compose关闭容器

docker-compose down

查看Log

docker logs ${容器id}
部署mysql docker-compose
services:
    mysql:
        network_mode: "host"
        environment:
            MYSQL_ROOT_PASSWORD: "yourpassword"
            MYSQL_USER: "test"
            MYSQL_PASS: "yourpassword"
        image: "docker.io/mysql:latest" 
        restart: always // 连不上就一直重试
        // depends_on:   选择依赖于某个服务,依赖的服务会先加载
        //    - "sss"
        volumes:
            - "./db:/var/lib/mysql"
            - "./conf/my.cnf:/etc/my.cnf"
            - "./init:/docker-entrypoint-initdb.d/"
        ports:
            - "3306:33060"

自动加载sql语句,实现初始化数据库

mysql的官方镜像中,会在加载时执行docker-entrypoint-initdb.d下面文件夹下的sql文件 利用这个实现初始化
如果mysql数据文件夹中有数据,则不会加载sql文件
EGG项目配合docker: 直接被中断

因为egg-scripts自己有一套守护进程,去掉daemon参数

"start": "egg-scripts start --title=egg-server-broken-chain",
部署NodeJs项目

新建Dockerfile文件

FROM node:10.13-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install -g cnpm
RUN cnpm install --production --silent
COPY . .
EXPOSE 7001
CMD [ "npm", "start"]

在docker-compose.yml中添加信息,用docker-compose管理多个镜像相当方便

最终的docker-compose.yml文件
version: "2"

services:
  broken-chain:
    image: broken-chain
    build: .
    environment:
      NODE_ENV: production
    ports:
      - 7001:7001
    depends_on:
      - "mysql"
    restart: always
  mysql:
    environment:
        MYSQL_ROOT_PASSWORD: "123"
    image: "docker.io/mysql:5.6" 
    volumes:
        - "./mysql/init:/docker-entrypoint-initdb.d/"
    ports:
        - "3306:3306"
发布镜像

登录Dockerhub

docker login

给镜像打上标签

docker tag ${镜像id} ${用户名}/${镜像名}:${tag标签}

push推到dockerhub

docker push  ${用户名}/${镜像名}:${tag标签}
最后

最终,你要把你做的项目给别人用,开箱即用的那种。你需要

新建目录结构

- init
   - xxx.sql //初始化的sql语句
- docker-compose.yml

docker-compose.yml如下

version: "2"

services:
  broken-chain:
    image: ${你的用户名}/${你的镜像} // 这回直接拉取你在dockerhub上的镜像
    // build: . 去掉构建步骤
    environment:
      NODE_ENV: production
    ports:
      - 7001:7001
    depends_on:
      - "mysql"
    restart: always
  mysql:
    environment:
        MYSQL_ROOT_PASSWORD: "123"
    image: "docker.io/mysql:5.6" 
    volumes:
        - "./mysql/init:/docker-entrypoint-initdb.d/"
    ports:
        - "3306:3306"

压缩zip给别人

使用命令一键运行( 数据库 + 项目 )

docker-compose up -d

舒服了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27822.html

相关文章

  • Docker打包nodejs项目据库

    摘要:你需要新建目录结构初始化的语句如下你的用户名你的镜像这回直接拉取你在上的镜像去掉构建步骤压缩给别人使用命令一键运行数据库项目舒服了 看这篇文章,必须知道基础的docker, 本文只提供思路和部分代码, 不负责教 所有的命令必须谨慎操作!三思而后行 命令 停止所有运行的容器 docker stop $(docker ps -a -q) 删除所有的容器 docker rm $(docker...

    MobService 评论0 收藏0
  • Docker部署基于Nodejs的Web应用-实战篇

    摘要:采用虚拟化的技术来虚拟化出应用程序的运行环境。安装成功后,可以通过查看版本号尽量使用最新的稳定版本。是镜像名,是镜像的版本号,到此你已经成功构建了一个新的镜像,你可以通过,查看你的镜像。部署时将此文件到生产环境服务器上。 Docker docker是一个开源的应用容器引擎,可以为我们提供安全、可移植、可重复的自动化部署的方式。docker采用虚拟化的技术来虚拟化出应用程序的运行环境。此...

    marek 评论0 收藏0
  • Docker部署基于Nodejs的Web应用-实战篇

    摘要:采用虚拟化的技术来虚拟化出应用程序的运行环境。安装成功后,可以通过查看版本号尽量使用最新的稳定版本。是镜像名,是镜像的版本号,到此你已经成功构建了一个新的镜像,你可以通过,查看你的镜像。部署时将此文件到生产环境服务器上。 Docker docker是一个开源的应用容器引擎,可以为我们提供安全、可移植、可重复的自动化部署的方式。docker采用虚拟化的技术来虚拟化出应用程序的运行环境。此...

    mikasa 评论0 收藏0
  • docker 应用系列(一)--- 一步步搭建虚拟机 docker 环境 附有 vue-cli +

    摘要:为确保系统里面没有自带的软件的残留,我们要清除一下旧版本的,虽然新系统一般都不会有就是了。更新软件包缓存。 showImg(https://segmentfault.com/img/remote/1460000015914895?w=1240&h=819); 小剧场 测试:裤裆你这页面刷新就白屏啊,怎么了啊,而且你看这 network,怎么这些 js 这么大啊,很耗流量而且加载速度还很...

    hatlonely 评论0 收藏0
  • 使用 Docker 部署 NodeJS + MongoDB 项目

    摘要:最近在学习,并用重新部署了项目,使用后确实大幅度地降低了部署难度。如果,内存,硬盘不够,只能加物理设备,但这个是有上限的。虚拟化时代为了解决物理设备的诸多问题,出现了虚拟机。全手动部署编写文件。一键启动,确保已安装。 最近在学习 Docker,并用 Docker 重新部署了cdfang-spider项目,使用 docker 后确实大幅度地降低了部署难度。如果你也想用 Docker 来部...

    warmcheng 评论0 收藏0

发表评论

0条评论

SimonMa

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<