発生している問題
Docker環境で、unicorn・sinatra を用いた web アプリを立ち上げるために docker-compose up -d
を実行し、ブラウザで localhost:8080
にアクセスしようとしても、「サーバーに接続できません」と表示されてしまいます。
ディレクトリの構成
problem1
┣ app
┃┗ ruby
┃ ┣ app.rb
┃ ┣ config.ru
┃ ┣ Dockerfile
┃ ┣ Gemfile
┃ ┗ unicorn.rb
┣ mysql
┃┣ conf.d
┃┃┗ mysql.cnf
┃┣ 0_init.sql
┃┗ my.cnf
該当のソースコード
▼ Dockerfile
docker
1FROM ruby:3.0.2 2 3LABEL maintainer="****" 4 5WORKDIR /app 6 7COPY Gemfile /app/Gemfile 8RUN bundle install 9 10COPY . /app 11 12CMD ["bundle", "exec", "unicorn", "-c", "unicorn.rb"]
▼ docker-compose.yml
yml
1version: "3" 2 3networks: 4 front: 5 ipam: 6 config: 7 - subnet: 10.0.0.0/16 8 back: 9 ipam: 10 config: 11 - subnet: 10.10.0.0/16 12 13volumes: 14 socket: 15 driver: local 16 log: 17 driver: local 18 docroot: 19 driver: local 20 21services: 22 app: 23 container_name: minimal_sns_app 24 build: app/ruby 25 volumes: 26 - socket:/var/run/unicorn/ 27 networks: 28 - front 29 - back 30 environment: 31 TZ: "Asia/Tokyo" 32 command: /bin/bash 33 tty: true 34 db: 35 image: mysql:latest 36 container_name: db 37 hostname: db 38 networks: 39 - back 40 volumes: 41 - ./mysql/my.cnf:/etc/mysql/my.cnf 42 - ./mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf 43 - ./mysql/0_init.sql:/docker-entrypoint-initdb.d/0_init.sql 44 environment: 45 MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' 46 MYSQL_DATABASE: app 47 TZ: "Asia/Tokyo"
▼ unicorn.rb
ruby
1listen '/var/run/unicorn/unicorn.sock' 2pid '/var/run/unicorn/unicorn.pid'
▼ config.ru
ruby
1require File.expand_path '../app.rb', __FILE__ 2 3run App
▼ Gemfile
ruby
1# A sample Gemfile 2source "https://rubygems.org" 3 4gem "sinatra" 5gem "unicorn"
▼ app.rb
ruby
1require 'json' 2require 'sinatra' 3 4class App < Sinatra::Base 5 set :protection, :except => [:ip_spoofing] 6 7 get '/' do 8 "I am live!" 9 end 10 11 get '/test' do 12 env.to_json 13 end 14end
分かる方がいらっしゃったら、ご教授いただけますと幸いです。