Techioz Blog

Web アプリ コンテナーに追加のボリュームを追加するときにエラーが発生する

概要

Ruby on Rails Web アプリ コンテナーに追加ボリュームを追加するときにエラーが発生する

こんにちは、私はコンテナ化された Rails アプリをプログラミングしています。現在、本番環境のセットアップを行っています。

私の docker-compose.production.yml:

version: '3'

services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: password

  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec puma -C config/puma.rb"
    volumes:
      - .:/rails-lyrics-site
      - /rails-lyrics-site/node_modules
      - bundle:/usr/local/bundle
      - public-data:/rails-lyrics-site/public
      - log-data:/rails-lyrics-site/log
      - tmp-data:/rails-lyrics-site/tmp
    ports:
      - "3000:3000"
    depends_on:
      - db

  nginx:
    build:
      context: containers/nginx
    volumes:
      - public-data:/rails-lyrics-site/public
      - tmp-data:/rails-lyrics-site/tmp
    ports:
      - "80:80"
    depends_on:
      - web

volumes:
  bundle:
  public-data:
  log-data:
  tmp-data:

問題は、docker-compose -f docker-compose.production.yml を起動して開始すると、次のエラーが発生することです。

エラー

Web コンテナから tmp-data ボリュームを削除すると、問題は発生しません。この設定では、Rails ソース コード内の tmp フォルダーが書き込まれていないようです。

誰か手伝ってくれませんか?

解決策

tmp/pids ディレクトリを作成する必要があります。