最近经常使用的Docker配置备忘录(NodeJS+Redis+MySQL)

首先

最近我开始经常使用Docker,我会一直制作并丢弃开发环境,并在试验中尝试各种不同的配置。我个人认为这些配置非常有用,所以我将其以备忘的形式记录在这篇文章中。

建筑设计

我将使用NodeJS + Redis + MySQL进行配置。
主要组成如下所示。

利用目的NodeJSwebアプリケーションMySQLユーザー等の主なデータRedisセッション,キャッシュ

我现在使用Redis来管理会话和缓存,但我认为有分离的解决方案。
例如,将缓存存储在DynamoDB中,而将会话管理保存在Redis中,就像这样。
在我自己搭建的环境中,并没有感受到需要这么分离的必要性,所以一切都由Redis来管理。

目录结构

本文将在稍后提供docker-compose.yml的内容,本次操作基于以下目录结构进行。

├── data
│   ├── mysql
│   └── redis
├── docker-compose.yml
├── mysql
│   └── Dockerfile
├── app
│   ├── Dockerfile
│   ├── app.js
│   ├── bin
│   │   └── www
│   ├── node_modules
│   ├── package-lock.json
│   ├── package.json
│   ├── public
│   │   ├── images
│   │   ├── javascripts
│   │   └── stylesheets
│   │       └── style.css
│   ├── routes
│   │   ├── index.js
│   │   └── users.js
│   └── views
│       ├── error.jade
│       ├── index.jade
│       └── layout.jade
└── redis
    └── Dockerfile

docker-compose.yml 文件

这次我们将使用Docker-Compose来分别启动NodeJS、MySQL和Redis的容器。
docker-compose的内容如下所示。

version: '3'

services:
  app:
    build:
      context: .
      dockerfile: ./app/Dockerfile
    depends_on:
      - mysql
      - redis
    ports:
      - '3000:3000'
    tty: true
    container_name: node_app

  mysql:
    build:
      context: .
      dockerfile: ./mysql/Dockerfile
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_USER: user
      MYSQL_PASSWORD: hogehoge
      MYSQL_DATABASE: testdb
    volumes:
      - ./data/mysql:/var/lib/mysql
    container_name: mysql

  redis:
    build:
      context: .
      dockerfile: ./redis/Dockerfile
    restart: always
    volumes:
      - ./data/redis:/data
    container_name: redis

以下是对services进行配置的内容,包括web应用程序和其他中间件的Docker镜像。
在app部分,有depends_on,它表示与其他的镜像之间的依赖关系。只有解决了依赖关系,app的内容才会运行。
在每个build部分,可以设置使用哪个Dockerfile来构建Docker镜像,所以让我们也把Dockerfile加上。

./app/Dockerfile = ./应用程序/Dockerfile

FROM node:latest

WORKDIR /home/app

COPY ./app/package*.json ./

RUN npm install

COPY ./app ./

EXPOSE 3000

./mysql/Dockerfile 的含义

FROM mysql:5.7

# ADD ./mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf

EXPOSE 3306

/redis/Dockerfile的准备文件

FROM redis

# COPY redis.conf /usr/local/etc/redis/redis.conf

EXPOSE 6379

执行

在包含docker-compose.yml文件的目录中执行。

建设

$ docker-compose build

开始

$ docker-compose up -d

执行

# nodeのコンテナ
$ docker-compose exec app bash

# redisのコンテナ
$ docker-compose exec redis bash

# mysqlのコンテナ
$ docker-compose exec mysql bash

以下是未在此处提及的命令,请参考这篇文章。 Docker Compose 命令汇总

最后

我记录了个人可能经常使用的环境,并附上了一些备忘录,如果有错误或更好的方法,请一定告诉我。

广告
将在 10 秒后关闭
bannerAds