発生している問題
unicorn を用いて web アプリを立ち上げるために docker-compose up -d を実行すると、以下のようなログが表示され、EXITされてしまいます。
Docker を強制的に終了させてしまったためにpidファイルが残ったままになっていることが原因だと考えられます。
terminal
bundler: failed to load command: unicorn (/usr/local/bundle/bin/unicorn) /usr/local/bundle/gems/unicorn-6.1.0/lib/unicorn/http_server.rb:206:in `pid=': Already running on PID:1 (or pid=/var/run/unicorn/unicorn.pid is stale) (ArgumentError)
試したこと
problem1ディレクトリ内で rm コマンドを用いて pid ファイルを消そうとしましたが、
- /var/run/unicorn/unicorn.pid
- /tmp/pids/server.pid
- tmp/pids/server.pid
が存在せず、消すことができませんでした。
ディレクトリの構成
problem1
┣ app
┃┗ ruby
┃ ┣ app.rb
┃ ┣ config.ru
┃ ┣ Dockerfile
┃ ┣ Gemfile
┃ ┗ unicorn.rb
┣ mysql
┃┣ conf.d
┃┃┗ mysql.cnf
┃┣ 0_init.sql
┃┗ my.cnf
関係がありそうなコード
--- Dockerfile ---
docker
FROM ruby:3.0.2 LABEL maintainer="****" WORKDIR /app COPY Gemfile /app/Gemfile RUN bundle install COPY . /app #EXPOSE 4567 CMD ["bundle", "exec", "unicorn", "-c", "unicorn.rb"]
--- docker-compose.yml ---
yml
version: "3" networks: front: ipam: config: - subnet: 10.0.0.0/16 back: ipam: config: - subnet: 10.10.0.0/16 volumes: socket: driver: local log: driver: local docroot: driver: local services: app: container_name: minimal_sns_app build: app/ruby volumes: - socket:/var/run/unicorn/ networks: - front - back environment: TZ: "Asia/Tokyo" db: image: mysql:latest container_name: db hostname: db networks: - back volumes: - ./mysql/my.cnf:/etc/mysql/my.cnf - ./mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf - ./mysql/0_init.sql:/docker-entrypoint-initdb.d/0_init.sql environment: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' MYSQL_DATABASE: app TZ: "Asia/Tokyo"
--- unicorn.rb ---
ruby
listen '/var/run/unicorn/unicorn.sock'pid '/var/run/unicorn/unicorn.pid'
--- config.ru ---
ru
require File.expand_path '../app.rb', __FILE__ run App
どなたかご教授いただけますと幸いです。

0 コメント