sql >> データベース >  >> NoSQL >> Redis

nodejsDockerイメージでredisを実行しています

    最善の解決策は、dockercomposeを使用することです。これを使用して、redisコンテナーを作成し、それにリンクしてから、node.jsアプリを起動します。まず、ここで詳しく説明されているdocker composeをインストールします-(https://docs.docker.com/compose/install/)。

    起動して実行したら、アプリのdockerfileと同じフォルダーにdocker-compose.ymlを作成する必要があります。次のものが含まれている必要があります

    version: '3'
    services:
      myapp:
        build: .  
        ports:
         - "3011:3011"
        links:
         - redis:redis
      redis:
        image: "redis:alpine"
    

    そうすると、localhost:6379の代わりに、node.jsアプリからredisにアクセスできるようになります。 redis:6379を使用します redisインスタンスにアクセスします。

    アプリを起動するには、docker-compose upを実行します 、端末で。ベストプラクティスは、networkを使用することです。 linksの代わりに しかし、これは単純化のために作られました。

    これは、redisとnode.jsの両方を同じイメージに配置して、必要に応じて実行することもできます。次のDockerfileが機能するはずです。これは、問題の内容に基づいています。

    FROM node:carbon
    
    RUN wget http://download.redis.io/redis-stable.tar.gz && \
        tar xvzf redis-stable.tar.gz && \
        cd redis-stable && \
        make && \
        mv src/redis-server /usr/bin/ && \
        cd .. && \
        rm -r redis-stable && \
        npm install -g concurrently   
    
    EXPOSE 6379
    
    WORKDIR /app
    
    COPY package.json /app
    
    RUN npm install
    
    COPY . /app
    
    EXPOSE 3011
    
    EXPOSE 6379
    
    CMD concurrently "/usr/bin/redis-server --bind '0.0.0.0'" "sleep 5s; node /app/src/server.js" 
    

    この2番目の方法は本当に悪い習慣であり、簡単にするためにスーパーバイザーや同様のツールの代わりに同時に使用しました。 CMDでのスリープは、アプリが実際に起動される前にredisを開始できるようにするためのものです。最適なものに調整する必要があります。これがお役に立てば幸いです。最初の方法を使用する方がはるかに優れています。



    1. タイムゾーンを考慮せずにMongoDBに日付を保存する

    2. マングースが埋め込まれている

    3. MongoDBデータベースの暗号化

    4. ClusterControlを使用したロールベースのアクセス制御の実施