前言

距離上一篇文章使用Docker建立Nodejs開發環境範本 已經有1年啦! 那時竟然還擔心部落格太多文章,Github page是否會被限制

Node.js (Express.js + MySQL Server)

建置流程(快速克隆 -> 趕時間)

  1. 直接使用git clone語法下載範例
$ git clone https://github.com/kabuto412rock/node-demo.git --branch express-mysql --single-branch
  1. 啟動服務、關閉服務
# 進到目錄底層
$ cd node-demo
# 啟動Docker服務
(node-demo) $ docker-compose up -d
# 停止Docker服務
(node-demo) $ docker-compose down

相對上篇文章的差異

  • 使用sequelize-cli進行Sequelize的設定,畢竟手寫migration、seeds太累
  • docker-compose.yaml多加MySQL容器、Adminer容器
    express-mysqldb:
    image: mysql:8.0
    # WARNIGN:正式環境請不要直接使用原生密碼,這只是開發偷懶用
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
        - "3308:3306"
    environment:
        # root的密碼
        MYSQL_ROOT_PASSWORD: PyoA2hGpSDQordaDAbuiQIIDS
        # 預設建立的DB名稱
        MYSQL_DATABASE: mydb
        # DB使用者的帳號
        MYSQL_USER: dbuser
        # DB使用者的密碼
        MYSQL_PASSWORD: youiIIDSA2hGpassword
    
  • my-app資料夾可以注意到config/config.json的host值與MySQL容器名稱相同,這是因為容器的hostname預設與名稱相同,其他password等設定可以參考上面對照
{
  "development": {
    "username": "dbuser",
    "password": "youiIIDSA2hGpassword",
    "database": "mydb",
    "host": "express-mysqldb",
    "dialect": "mysql"
  },
  // 略...
}

結語

還好當初有在blog的repo設定好Github Aciton和寫README備忘,才可以像現在簡單git push一下就能生成新文章。

雖然這篇有點水,但至少是好習慣的開始。