Docker+Nginx環境で開発しているのですが、Rspecのシステムスペックでテスト失敗時にtmp/screenshots/に画像が自動保存されるはずなのですが、保存されずtmpフォルダが空のままという状況です。(ちなみにいうとlogも出力されないです。からのフォルダのままです。)
screeenshotsフォルダを手動で作ったりしましたが変わりませんでした。おそらくDockerのtmpのマウントがうまくいっていないのかなと推測しているのですが、調べても同じ事例がでてこず完全に行き詰ってしまったのでご教授いただけますと大変助かります。
何卒宜しくお願い致します。
containar/Dockerfile(Nginx用)
FROM nginx:1.15.8 # インクルード用のディレクトリ内を削除 RUN rm -f /etc/nginx/conf.d/* # Nginxの設定ファイルをコンテナにコピー COPY nginx.conf /etc/nginx/conf.d/webapp.conf # ビルド完了後にNginxを起動 CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf nginx.conf # プロキシ先の指定 # Nginxが受け取ったリクエストをバックエンドのpumaに送信 upstream webapp { # ソケット通信したいのでpuma.sockを指定 server unix:///webapp/tmp/sockets/puma.sock; } server { listen 80; # ドメインもしくはIPを指定 server_name 192.168.hoge.hoge (念のため伏せています); access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; # ドキュメントルートの指定 root /webapp/public; client_max_body_size 100m; error_page 404 /404.html; error_page 505 502 503 504 /500.html; try_files $uri/index.html $uri @webapp; keepalive_timeout 5; # リバースプロキシ関連の設定 location @webapp { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://webapp; } }
docker-compose.yml
version: '3' services: app: build: context: . env_file: - ./environments/db.env command: bundle exec puma -C config/puma.rb volumes: - .:/webapp - bundle:/bundle - public-data:/webapp/public - tmp-data:/webapp/tmp - log-data:/webapp/log depends_on: - db tty: true stdin_open: true db: image: mysql:5.7 env_file: - ./environments/db.env volumes: - db-data:/var/lib/mysql web: build: context: containers/nginx volumes: - public-data:/webapp/public - tmp-data:/webapp/tmp ports: - 80:80 depends_on: - app volumes: public-data: tmp-data: log-data: db-data: bundle: driver: local
Dockerfile(MySQL,Railsアプリ用)
Dockerfile
1FROM ruby:2.7.1 2 3# リポジトリを更新し依存モジュールをインストール 4RUN apt-get update -qq && \ 5 apt-get install -y build-essential \ 6 nodejs 7 8# yarnパッケージ管理ツールインストール 9RUN apt-get update && apt-get install -y curl apt-transport-https wget && \ 10 curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ 11 echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ 12 apt-get update && apt-get install -y yarn 13 14RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add \ 15 && echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list \ 16 && apt-get update -qq \ 17 && apt-get install -y google-chrome-stable libnss3 libgconf-2-4 18 19# chromedriverの最新をインストール 20RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` \ 21 && curl -sS -o /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip \ 22 && unzip /tmp/chromedriver_linux64.zip \ 23 && mv chromedriver /usr/local/bin/ 24 25# Imagemagicをインストール 26RUN apt-get update && apt-get install -y imagemagick libmagick++-dev 27 28# Node.jsをインストール 29RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - && \ 30 apt-get install -y nodejs 31 32# ルート直下にwebappという名前で作業ディレクトリを作成(コンテナ内のアプリケーションディレクトリ) 33RUN mkdir /webapp 34WORKDIR /webapp 35 36# ホストのGemfileとGemfile.lockをコンテナにコピー 37COPY Gemfile /webapp/Gemfile 38COPY Gemfile.lock /webapp/Gemfile.lock 39 40# bundle installの実行 41RUN bundle install 42 43# ホストのアプリケーションディレクトリ内をすべてコンテナにコピー 44COPY . /webapp 45 46# puma.sockを配置するディレクトリを作成 47RUN mkdir -p tmp/sockets 48
puma.rb
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i threads threads_count, threads_count port ENV.fetch("PORT") { 3000 } environment ENV.fetch("RAILS_ENV") { "development" } plugin :tmp_restart app_root = File.expand_path("../..", __FILE__) bind "unix://#{app_root}/tmp/sockets/puma.sock" stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true
$ docker volume inspect webapp_tmp-dataの出力
[ { "CreatedAt": "2020-09-05T10:12:43Z", "Driver": "local", "Labels": { "com.docker.compose.project": "webapp", "com.docker.compose.version": "1.25.5", "com.docker.compose.volume": "tmp-data" }, "Mountpoint": "/var/lib/docker/volumes/webapp_tmp-data/_data", "Name": "webapp_tmp-data", "Options": null, "Scope": "local" } ]