zoukankan      html  css  js  c++  java
  • docker-compose mysql和node连接认证mongo问题

    前言

    最近,想部署一个自己的项目,鉴于自己的服务器是VPS(虚拟主机),配置也不够,就想到了用 docker 直接部署好了,这样既方便部署也方便不用的时候卸载或更新

    然后本地搭建了环境,踩了一些坑,在这里记录一下

    mysql 问题(初始化创建数据库不成功)

    首先我是使用 docker-compose 来搭建我的服务的,配置如下:

    mysql:
        image: mysql:5.5
        restart: always
        # 构建容器
        build: ./mysql
        environment:
            MYSQL_ROOT_PASSWORD: 123456
            TZ: Asia/Shanghai
        volumes:
            - ./mysql/db:/var/lib/mysql
        ports:
            - 3306:3306
    

    所以第一次运行 docker-compose up 的时候没有加上密码(MYSQL_ROOT_PASSWORD配置),然后出于安全起见,我配置了root密码,然后关闭后,执行 docker-compose up,发现 mysql 容器的数据库并没有创建

    查了下资料:https://github.com/docker-library/mariadb/issues/68

    挂载的宿主主机的文件夹必须为空文件夹(.gitignore等隐藏文件不影响),如果里面有文件,就不会初始化数据库。

    ps: mongo 创建不成功也可参考如上解决方法

    node连接认证mongo问题

    首先我的 docker-compose.yml 配置文件如下:

    mongo:
        image: mongo
        restart: always
        environment:
        MONGO_INITDB_ROOT_USERNAME: gating
        MONGO_INITDB_ROOT_PASSWORD: 123456
        TZ: Asia/Shanghai
        # 需要链接本地代码时
        volumes:
        - ./mongo/db:/data/db
        ports:
        - 27017:27017
    

    我尝试了通过文档的认证连接,代码如下:

    mongoose.connect('mongodb://user:pass@mongo/database');
    

    ps: 这里能用 mongo 是因为我在 docker-compose 中指定了 mongo 容器的名字,在代码里使用 mongo 就表示 localhost:27017

    连接失败,最后才发现是我缺少了一个配置 authSource,然后配置上了,最后终于连接上了我的mongo,可以愉快的开发部署了

    const mongoose = require('mongoose')
    mongoose.connect('mongodb://gating:123456@mongo/small_time?authSource=admin')
    
  • 相关阅读:
    Unity3D-ScrollRect 各参数的代码引用以及作用
    Unity3D-坐标转换笔记
    angularJS中XHR与promise
    angularJS中的事件
    angularJS中如何写服务
    angularJS中如何写自定义指令
    angularJS内置指令一览
    angularJS中如何写控制器
    理解angularJS中作用域$scope
    如何写angularJS模块
  • 原文地址:https://www.cnblogs.com/gating/p/12488426.html
Copyright © 2011-2022 走看看