質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Redmine

Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

unicorn + redmineをdocker-composeから起動すると失敗する

TaroEco
TaroEco

総合スコア9

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Redmine

Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

3回答

0グッド

0クリップ

339閲覧

投稿2022/11/13 09:30

前提

dockerでredmine + nginx + unicornのコンテナを作成しようとしています。
nginxのコンテナに、rails及びredmineをインストールし、docker-compose.yml
からredmine + unicornを起動しようとすると起動しません。

docker-compose.ymlにコマンドを記述せずに、コンテナに入ってから
起動スクリプトを叩くと起動し、PCのブラウザからも正常にアクセス可能となります。

実現したいこと

dockerコンテナ起動時にredmineも自動で起動させたいです。
※systemctlで起動させる方法をトライしましたが、そもそもdockerコンテナに
systemctlに追加が出来ませんでした。

発生している問題・エラーメッセージ

/usr/share/redmine# cat log/unicorn.stderr.log

INFO -- : Refreshing Gem list INFO -- : listening on addr=/usr/share/redmine/tmp/unicorn.sock fd=7 INFO -- : listening on addr=0.0.0.0:8282 fd=10 INFO -- : master process ready INFO -- : worker=0 ready INFO -- : worker=1 ready

上記の内容は問題ないかと思われますが、他にどこを確認したらよいか分かりません。

該当のソースコード

[docker-compose.yml]

version: '3' services: redmine01: image: koetaro/ubuntu-nginx-redmine container_name: mynginx-redmine01 ports: - 8080:80 volumes: - ./data/plugins:/usr/share/redmine/plugins - ./data/themes:/usr/share/redmine/public/themes - ./redmine/database.yml:/usr/share/redmine/config/database.yml extra_hosts: - db-host:192.168.100.1 networks: app_net: ipv4_address: 192.168.100.2 environment: REDMINE_DB_MYSQL: redmine REDMINE_DB_PASSWORD: redmine TZ: Asia/Tokyo #command: sh -c "/root/.rbenv/shims/bundle exec 'unicorn_rails -D -c /usr/share/redmine/config/unicorn.rb -E production'" working_dir: /usr/share/redmine restart: always

[database.yml]

# Default setup is given for MySQL 5.7.7 or later. # Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end. # Line indentation must be 2 spaces (no tabs). production: adapter: mysql2 database: redmine host: db-host username: redmine password: redmine # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7 encoding: utf8mb4

[unicorn.rb]

# -*- coding: utf-8 -*- worker_processes 2 listen "/usr/share/redmine/tmp/unicorn.sock", :backlog => 32 listen 8282, :tcp_nopush => true timeout 30 pid "/usr/share/redmine/tmp/unicorn.pid" stderr_path '/usr/share/redmine/log/unicorn.stderr.log' stdout_path '/usr/share/redmine/log/unicorn.stdout.log' preload_app true check_client_connection false before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! old_pid = "#{server.config[:pid]}.oldbin" if old_pid != server.pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH end end end after_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end

[nginxの設定]
/etc/nginx/conf.d/redmine.conf

upstream unicorn { server unix:/usr/share/redmine/tmp/unicorn.sock; } server { listen 80; server_name _; root /usr/share/redmine/public; client_max_body_size 1G; location / { try_files $uri/index.html $uri.html $uri @app; } location @app { proxy_redirect off; 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_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 600; proxy_pass http://unicorn; } error_page 500 502 503 504 /500.html; }

/etc/nginx/sites-available/default
全てコメントアウト

/etc/nginx/nginx.conf(デフォルト)

user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } #mail { # # See sample authentication script at: # # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript # # # auth_http localhost/auth.php; # # pop3_capabilities "TOP" "USER"; # # imap_capabilities "IMAP4rev1" "UIDPLUS"; # # server { # listen localhost:110; # protocol pop3; # proxy on; # } # # server { # listen localhost:143; # protocol imap; # proxy on; # } #}

/tmp/startredmine.sh
※redmineの起動スクリプト

#!/bin/bash cd /usr/share/redmine /root/.rbenv/shims/bundle install rm -rf /usr/share/redmine/tmp/unicorn.pid rm -rf /usr/share/redmine/tmp/unicorn.sock /root/.rbenv/shims/bundle exec 'unicorn_rails -D -c /usr/share/redmine/config/unicorn.rb -E production'

試したこと

1.docker-compose.ymlのcommand行の調整
2.docker-compose.ymlでentrypointの追加
※詳細はコメントをご確認ください。いずれも動作しない状況です。

もうこの問題に数週間前から直面していますが、自動起動が出来ず苦しんでいます。
助けて頂けると幸いです。

よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

項目バージョン等
redmine5.0
nginxバージョンnginx/1.22.0 (Ubuntu)
コンテナkoetaro/ubuntu-nginx-redmine
ubuntuバージョンubuntu 22.10

※docker hubにアップしています。

検証中のハード環境はesxi 6.5の仮想OS:Ubuntu 22.04を使用しています。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答3

0

自己解決

解決しました。

Unicorn + redmineの起動ファイルにunicornからredmineを起動するコマンドを書いていたのですが、
pidファイルが残っているため起動していない事が分かりました。

こちらをpid及びsockファイルを削除してから起動するように、シェルスクリプトで起動するようにしたところ
確実に起動するようになりました。

redmineのpluginをインストール後にも問題なくredmineが起動するよう、bundle installのコマンドも最初に
実行するようにしています。

現在はAWSのEC2で動かしていて、EC2にnginxをインストールし、リバースプロキシー経由で外部から
アクセス出来るようにしています。

同一のEC2で複数のコンテナを起動して、複数のリバプロ設定で複数のアプリケーションを公開できるよう
にもなっています。

サクッとプロジェクト管理ツールが公開できるので非常に便利だと思います。

これでもDockerはごみソフトウェアでしょうか。

cat /etc/systemd/system/unicorn-redmine.service

[Unit]
Description=redmine

[Service]
WorkingDirectory=/usr/share/redmine
Environment=RAILS_ENV=production
Environment=RAILS_SERVE_STATIC_FILES=1
SyslogIdentifier=unicorn-redmine
PIDFile=/usr/share/redmine/tmp/unicorn.pid
#ExecStart=/root/.rbenv/shims/bundle exec "unicorn_rails -D -c /usr/share/redmine/config/unicorn.rb -E production"
ExecStart=/usr/bin/startredmine.sh

[Install]
WantedBy=multi-user.target

投稿2022/11/15 13:38

TaroEco

総合スコア9

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

自己解決しました。

コンテナ自体はubuntu22.04単体にnginx、ruby、rails、redmineの順序でインストールを行ったのですが、ポイントとしては下記のサイトを参考にしてsystemd経由でユニコーンを起動させることにより動くようになりました。

https://genchan.net/it/virtualization/docker/13093/

上記のdocker hubにコンテナを上げ直してあります。

docker-compose.ymlファイルを後程共有します。

投稿2022/11/13 23:09

TaroEco

総合スコア9

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

TaroEco

2022/11/14 12:53

再度試したところredmineが起動せず、更に試したところコンテナが起動しなくなりました。 本日は時間が無いため、調査してまたアップします。 もしもお試し頂いた方いましたら情報頂けると幸いです。 ゴミソフトウェアとまではいきませんが、なかなか癖がありますね。 docker-compose.ymlの内容です。 ``` version: '3' services: redmine2: image: ubuntu-nginx-redmine03 container_name: mynginx-redmine02 ports: - 8080:80 volumes: - ./data/plugins:/usr/share/redmine/plugins - ./data/themes:/usr/share/redmine/public/themes - ./redmine/database.yml:/usr/share/redmine/config/database.yml - ./redmine/log:/usr/share/redmine/log extra_hosts: - db-host:172.16.100.1 networks: app_net: ipv4_address: 172.16.100.2 privileged: true environment: REDMINE_DB_MYSQL: redmine02 REDMINE_DB_PASSWORD: redmine02 TZ: Asia/Tokyo command: /sbin/init #command: /sbin/init && sh -c "systemctl start unicorn-redmine.service" #command: bash -c "bash /tmp/startredmine.sh" #command: sh -c "/root/.rbenv/shims/bundle exec 'unicorn_rails -D -c /usr/share/redmine/config/unicorn.rb -E production'" #command: sh -c "sh /tmp/startredmine.sh" #entrypoint: > #bash -c /tmp/startredmine.sh working_dir: /usr/share/redmine restart: always networks: app_net: driver: bridge name: app_net ipam: config: - subnet: 172.16.100.0/24 ```

0

Text

1Dockerは使えないゴミソフトウェアである。

投稿2022/11/13 09:41

atcoderyellow

総合スコア481

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

2022/11/13 09:49

こちらの回答が他のユーザーから「スパムと見受けられる内容を含む回答」という指摘を受けました。

2022/11/14 20:08

こちらの回答が複数のユーザーから「攻撃的な表現などを含む不快な回答」という指摘を受けました。

2022/11/13 10:59

こちらの回答が他のユーザーから「質問に対する回答となっていない投稿」という指摘を受けました。

回答へのコメント

atcoderyellow

2022/11/13 18:04

Docker信者が迷惑であることが証明された。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Redmine

Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです