Rubyと筋肉とギターとわたし

エンジニア二年目の雑魚です。プログラミング・ギター・筋トレのことをメインにブログを書いていきます。

Heroku + Rails + Sendgridでメール送信ができない

f:id:rdwbocungelt5:20181022120235p:plain

どうもてぃです。

今回のことで3日ほど時間を溶かしました。

同じようなことではまってる人が見当たらなかったので、記事にします。

環境

以下僕がやった設定を書きます。

公式ドキュメントの設定

Heroku公式のドキュメント通りにやっていきました。

ドキュメント通りです。まじで。

devcenter.heroku.com

今回はstaging環境を作成し、Herokuへあげました。

設定はproductionをまるまるコピーしてconfig/environments/staging.rbを作成し、上記ドキュメント通りにやった感じです。

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.smtp_settings = {
    user_name: ENV['SENDGRID_USERNAME'],
    password: ENV['SENDGRID_PASSWORD'],
    domain: 'yourdomain.com',
    address: 'smtp.sendgrid.net',
    port: 587,
    authentication: :plain,
    enable_starttls_auto: true
  }

↑をぶち込んだだけ。

Heroku環境変数の設定

Herokuの環境変数heroku configで確認できます。

=== amazon-ban-staging Config Vars
DATABASE_URL:                                      <database url>
HEROKU_POSTGRESQL_NAVY_URL:   <navy postgresql url>
LANG:                                                        en_US.UTF-8
RACK_ENV:                                               staging
RAILS_ENV:                                               staging
RAILS_LOG_TO_STDOUT:                       enabled
RAILS_SERVE_STATIC_FILES:                enabled
SECRET_KEY_BASE:                              <your secret key>
SENDGRID_PASSWORD:                        <your sendgrid password>
SENDGRID_USERNAME:                        <your sendgrid username>

もしくは、 ダッシュボード Settings配下の Config Varsの「Reveal Config Vars」で確認することが出来ます。

f:id:rdwbocungelt5:20181023130534p:plain

RACK_ENVRAILS_ENVstagingへ、SENDGRID_PASSWORDSENDGRID_USERNAMEheroku addons:add sendgrid:starterをやった際に自動的に設定されます。 ます ここで足りないのは、 SENDGRID_API_KEY

Sendgridの画面から生成して設定をします。

$ heroku addons:open sendgrid

でブラウザとともに、Sendgridのダッシュボードが開きます。

開いたら、 Settings -> API Keysを開き、 Create API Keyをクリック。

f:id:rdwbocungelt5:20181023133406p:plain

適当なAPI Key Nameを設定し、アクセスはFull Accessへ(プロジェクトに応じて変更してください)。

Create & Viewをクリックすると、以下のような画面でkeyが表示されます。

f:id:rdwbocungelt5:20181023141316p:plain

黒く塗りつぶしているところをクリックするとコピーされるので、これをターミナル上からHerokuの環境変数に設定します。

$ heroku config:set SENDGRID_API_KEY='さっきコピーしたKey'

以上、必要な設定は終わり。

これで、適当なところでActionMailerを動かせばいい。

メールが届かない

書いてる通りに設定を行って、いろんな記事を渡り歩いたんですが、メールが送信できない。

というよりも、メール送信はできているけど、Sendgrid経由でメールが送信できていないようでした。

ローカルから実際にSendgrid経由でメールを送ってみたコードが以下(公式に書いてるのと同じ)。

github.com

gemの dotenv.envを設定し、実際に動かしたのですが、Sendgrid経由でメール送信できている。

SendgridのダッシュボードのActivityにも表示されている。API Keyに問題があるわけではなさそう。

次にheroku run rails cで実際にActionMailerでメールを送信してみましたが、コンソール上にはメール送信が完了したとのログしか残らない。

エラーも表示されない。。。 どうしたものか。

設定を見なおした

trelloを見なおしていたら、config/environments/staging.rbがなかった時に別でメール設定を行っていたことが発覚しました。

それが、 config/initializers/mail.rb、こいつ。

if Rails.env.production?
  ActionMailer::Base.delivery_method = :smtp
  ActionMailer::Base.smtp_settings = {
    address: 'smtp.gmail.com',
    domain: 'gmail.com',
    port: 587,
    user_name: ENV['MAIL_ADDRESS'],
    password: ENV['MAIL_PASSWORD'],
    authentication: 'plain',
    enable_starttls_auto: true,
  }
elsif Rails.env.development?
  ActionMailer::Base.delivery_method = :letter_opener
else
  ActionMailer::Base.delivery_method = :test
end

config/environments/staging.rbにメールの設定を書いているのですが、実際にメールが送られるときにはinitializers配下が実行されるようで、何も設定していなかった僕はstaging環境ではすべてtest環境が動くようになっていたのです。

こりゃあ、全部Sendgrid経由でメールが送れないわけですわ。

ということで、config/initializers/mail.rbへHeroku用にstagingの設定を書き込みました。

if Rails.env.production?
  ActionMailer::Base.delivery_method = :smtp
  ActionMailer::Base.smtp_settings = {
    address: 'smtp.gmail.com',
    domain: 'gmail.com',
    port: 587,
    user_name: ENV['MAIL_ADDRESS'],
    password: ENV['MAIL_PASSWORD'],
    authentication: 'plain',
    enable_starttls_auto: true,
  }
elsif Rails.env.development?
  ActionMailer::Base.delivery_method = :letter_opener
elsif Rails.env.staging?
  ActionMailer::Base.delivery_method = :smtp
  ActionMailer::Base.default_url_options = { host: 'yourhost.com' }
  ActionMailer::Base.perform_deliveries = true
  ActionMailer::Base.smtp_settings = {
    user_name: ENV['SENDGRID_USERNAME'],
    password: ENV['SENDGRID_PASSWORD'],
    domain: 'herokuapp.com',
    address: 'smtp.sendgrid.net',
    port: 587,
    authentication: :plain,
    enable_starttls_auto: true
  }
else
  ActionMailer::Base.delivery_method = :test
end

解決

ちょうどGitHubが落ちてしまって、この設定のプルリクがマージできなかったのですが、今朝障害が直ったようでして、僕の方の障害も一緒に直りました。

さすがGitHub様様です。

elementaryOS(Ubuntu 16.04.5 LTS)でUSキーボードを使うと幸せになれる

どうもてぃです。

プログラマーたるもの、やはりUSキーボードでしょう。

経緯としては、やっぱりmacのようなトラックパッドを実現するのは、他社のPCでは厳しいというのと、せっかくならUSにしてみようと言う好奇心から買ってみました。

以下、現PCへの苦情まとめ。


  • タイピングをしていると、トラックパッドに手のひらが当たって入力できない
  • ctrl + t を押して新規タブを作成すると高確率でフォームにカーソルが行かない
  • 移動が思ったように行かない
  • キー配列がゴミ(一番右になんかおる)
  • やっぱり押し心地が悪い

etc...


f:id:rdwbocungelt5:20181015095849j:plain

とまあ、上げればキリが無いですが、毎日使うものなのでストレスはそれなりにたまります。

お金に余裕が出てきたので、とりあえずUSキーボード入門として安いやつ買ってみました。

ThinkPadのキーボード

いいですよね。

サブ機でちょっと前にThinkPad X280を使ってたのですが、赤◯首とキーの押し心地が凄い良い。

という思い出があったので、ThinkPadのキーボードを買いました。

これ。


飽食なのでアフィリリンク貼っときます。

bluetoothにしなかったのは、レビューにも合ったのですが、遅延のせいで制御があまりうまく行かなかったりするそうなので今回は見送りました。

援助していただいているスーパーエンジニアの方がHHKBを有線で使っていたのもあってそれに倣いました。

コードが邪魔なので、これも買いました。


ちょっと長くて、向きをミスりましたがいまのところ満足。不便なら買い換えます。

設定

ibuz-mozcfcitxで設定しました。

始めは以下の記事を参考に設定。

qiita.com

ただ、なぜか上の記事の「Mozcのキー設定変更」以下をやってみても、ctrl + spaceだと文字切り替えがうまく行かず。。。

独自のやり方で設定しました。

上の記事の「キーボードレイアウト変更」までやった状態です。

まず、左上のアプリケーションから「アプリの検索」で「Fcitx 設定」を開く。

f:id:rdwbocungelt5:20181015103728p:plain

次にタブで「全体の設定」へ行き、入力メソッドのオンオフを設定する。

僕の場合、スペース右のAltで変更できるようにしました。

macっぽく。

f:id:rdwbocungelt5:20181015103830p:plain

これだけで一旦設定は終了です。

ただ、これだと、US -> Mozc -> USと行くと、右上の表記はUSなのに、実際に打つ文字はJISになっているという現象が起きます。

なので、Mozcを解除した際に、USへ切り替えるように設定します(これ以外にも、キーボードレイアウトの状態を修正しても直らなかった)。

f:id:rdwbocungelt5:20181015104600p:plain

上タブの「入力メソッド」へ行き、左下の+を押下。

f:id:rdwbocungelt5:20181015104720p:plain

セレクトボックスの一番下にUSがあるので選択してOK。

f:id:rdwbocungelt5:20181015104803p:plain

この状態になったら、必要なくなったキーボード - 日本語を選択して、-で削除する。

f:id:rdwbocungelt5:20181015104913p:plain

最後にキーボード - 英語(US)を選択して、で優先順位を上げる。

f:id:rdwbocungelt5:20181015105023p:plain

これで完了。

超快適

f:id:rdwbocungelt5:20181015105530j:plain

あとは外付けキーボードを接続した際に、内蔵キーボードを無効化する設定をしたら終了なのですが、時間がかかりそうなのでまた今度やる。

めっちゃ快適ですー^^

壊れたらHHKB買います。


Ubuntuにheroku CLIがインストールできない

f:id:rdwbocungelt5:20181009115813j:plain

段々と寒くなってきましたね。

どうもてぃです。

macだと簡単なheroku cliの導入に手こずりました。

環境

  • Ubuntu 16.04.5 LTS
  • elementary OS 0.4.1 Loki

現象

テスト環境でわりかしデプロイが簡単で多用されるheroku

デプロイコストが少なかったので使おうと思ったのですが、ubuntuでこんなにハマるとは思ってもみなかったですね。

公式ページを参考にやってみました。

devcenter.heroku.com

$ wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh
This script requires superuser access to install apt packages.
You will be prompted for your password by sudo.
[sudo] user のパスワード:                
+ dpkg -s apt-transport-https
+ echo deb https://cli-assets.heroku.com/apt ./
+ dpkg -s heroku-toolbelt
+ true
+ curl https://cli-assets.heroku.com/apt/release.key
+ apt-key add -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1737  100  1737    0     0   9819      0 --:--:-- --:--:-- --:--:--  9869
OK
+ apt-get update
無視:1 http://dl.google.com/linux/chrome/deb stable InRelease
取得:2 https://dl.yarnpkg.com/debian stable InRelease [13.3 kB]                                                                            
取得:3 https://dl.winehq.org/wine-builds/ubuntu xenial InRelease [4,701 B]                                                                                                                    
取得:4 https://download.docker.com/linux/ubuntu zesty InRelease [49.8 kB]                                                                                                                     
取得:5 http://packages.elementary.io/appcenter xenial InRelease [6,128 B]                                                                                                               
取得:6 https://dl.yarnpkg.com/debian stable/main amd64 Packages [7,905 B]                                                                                                                     
取得:7 https://dl.yarnpkg.com/debian stable/main i386 Packages [7,905 B]                                                                                                                      
取得:8 https://dl.yarnpkg.com/debian stable/main all Packages [7,905 B]                                                                                                                       
取得:9 https://dl.winehq.org/wine-builds/ubuntu xenial/main amd64 Packages [43.3 kB]                                                                                                          
取得:10 https://cli-assets.heroku.com/apt ./ InRelease [2,533 B]                                                                                                                      
取得:11 http://dl.google.com/linux/chrome/deb stable Release [1,189 B]                                                                                                                        
取得:12 https://download.docker.com/linux/ubuntu zesty/stable amd64 Packages [2,477 B]                                                                                                 
取得:13 http://dl.google.com/linux/chrome/deb stable Release.gpg [819 B]                                                                                                                      
取得:14 https://cli-assets.heroku.com/apt ./ Packages [620 B]                                                                                                                       
取得:15 http://packages.elementary.io/appcenter xenial/main amd64 Packages [78.3 kB]                                                                     
取得:16 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]                                                            
取得:17 http://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,381 B]                                               
取得:18 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial InRelease [17.5 kB]                                               
取得:19 http://packages.elementary.io/appcenter xenial/main i386 Packages [614 B]                       
取得:20 http://packages.elementary.io/appcenter xenial/main amd64 DEP-11 Metadata [83.4 kB]          
取得:21 http://packages.elementary.io/appcenter xenial/main DEP-11 64x64 Icons [289 kB]                                                 
取得:22 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]                                                 
無視:23 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial InRelease                  
取得:24 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]                
取得:25 http://archive.ubuntu.com/ubuntu xenial-security InRelease [107 kB]                    
取得:26 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial InRelease [23.8 kB]
取得:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1,201 kB]
取得:28 http://archive.ubuntu.com/ubuntu xenial/main Translation-ja [290 kB]                                                
取得:29 http://ppa.launchpad.net/philip.scott/elementary-tweaks/ubuntu xenial InRelease [18.1 kB]
取得:30 http://archive.ubuntu.com/ubuntu xenial/main Translation-en [568 kB]                        
取得:31 http://archive.ubuntu.com/ubuntu xenial/main amd64 DEP-11 Metadata [733 kB]                      
取得:32 http://archive.ubuntu.com/ubuntu xenial/main DEP-11 64x64 Icons [409 kB]                                                                                
取得:33 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [8,344 B]                                                                          
取得:34 http://archive.ubuntu.com/ubuntu xenial/restricted Translation-en [2,908 B]                                        
取得:35 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 DEP-11 Metadata [186 B] 
取得:36 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [7,532 kB]                                              
取得:37 http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu xenial InRelease [17.5 kB]                                     
取得:38 http://archive.ubuntu.com/ubuntu xenial/universe Translation-ja [1,034 kB]                                            
取得:39 http://archive.ubuntu.com/ubuntu xenial/universe Translation-en [4,354 kB]                                                                        
取得:40 http://archive.ubuntu.com/ubuntu xenial/universe amd64 DEP-11 Metadata [3,410 kB]                                                                 
取得:41 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease [17.5 kB]               
取得:42 http://archive.ubuntu.com/ubuntu xenial/universe DEP-11 64x64 Icons [7,448 kB]                 
取得:43 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial/main Sources [21.4 kB]                                                                                                    
取得:44 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [144 kB]                                                                                                            
取得:45 http://archive.ubuntu.com/ubuntu xenial/multiverse Translation-ja [8,704 B]                                                                                                           
取得:46 http://archive.ubuntu.com/ubuntu xenial/multiverse Translation-en [106 kB]                                                                                                            
取得:47 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 DEP-11 Metadata [63.8 kB]                                                                                                    
取得:48 http://archive.ubuntu.com/ubuntu xenial/multiverse DEP-11 64x64 Icons [230 kB]                                                                                                        
取得:49 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [856 kB]                                                                                                          
取得:50 http://archive.ubuntu.com/ubuntu xenial-updates/main Translation-en [349 kB]                                                                                                          
取得:51 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 DEP-11 Metadata [320 kB]                                                                                                   
取得:52 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease [23.5 kB]                                                                                                     
取得:53 http://archive.ubuntu.com/ubuntu xenial-updates/main DEP-11 64x64 Icons [237 kB]                                                                                                      
取得:54 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [7,556 B]                                                                                                   
取得:55 http://archive.ubuntu.com/ubuntu xenial-updates/restricted Translation-en [2,272 B]                                                                                                   
取得:56 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 DEP-11 Metadata [157 B]                                                                                              
取得:57 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [690 kB]                                                                                                      
取得:58 http://archive.ubuntu.com/ubuntu xenial-updates/universe Translation-en [279 kB]                                                                                                      
取得:59 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 DEP-11 Metadata [247 kB]                                                                                               
取得:60 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial/main amd64 Packages [40.0 kB]                                                                                             
取得:61 http://archive.ubuntu.com/ubuntu xenial-updates/universe DEP-11 64x64 Icons [335 kB]                                                                                                  
取得:62 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [16.4 kB]                                                                                                   
取得:63 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse Translation-en [8,344 B]                                                                                                   
取得:64 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 DEP-11 Metadata [5,968 B]                                                                                            
取得:65 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse DEP-11 64x64 Icons [14.3 kB]                                                                                               
取得:66 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [7,304 B]                                                                                                       
取得:67 http://archive.ubuntu.com/ubuntu xenial-backports/main Translation-en [4,456 B]                                                                                                       
取得:68 https://packagecloud.io/slacktechnologies/slack/debian jessie/main amd64 Packages [9,293 B]                                                                                           
取得:69 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 DEP-11 Metadata [3,328 B]                                                                                                
取得:70 http://archive.ubuntu.com/ubuntu xenial-backports/main DEP-11 64x64 Icons [29 B]                                                                                                      
取得:71 http://archive.ubuntu.com/ubuntu xenial-backports/restricted amd64 DEP-11 Metadata [194 B]                                                                                            
取得:72 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [7,804 B]                                                                                                   
取得:73 http://archive.ubuntu.com/ubuntu xenial-backports/universe Translation-en [4,184 B]                                                                                                   
取得:74 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 DEP-11 Metadata [5,104 B]                                                                                            
無視:75 https://packagecloud.io/slacktechnologies/slack/debian jessie/main i386 Packages                                                                                                      
取得:76 http://archive.ubuntu.com/ubuntu xenial-backports/universe DEP-11 64x64 Icons [1,789 B]                                                                                               
取得:77 http://archive.ubuntu.com/ubuntu xenial-backports/multiverse amd64 DEP-11 Metadata [216 B]                                                                                            
取得:78 http://archive.ubuntu.com/ubuntu xenial-backports/multiverse DEP-11 64x64 Icons [29 B]                                                                                                
取得:79 http://archive.ubuntu.com/ubuntu xenial-security/main amd64 Packages [563 kB]                                                                                                         
取得:75 https://packagecloud.io/slacktechnologies/slack/debian jessie/main i386 Packages [4,991 B]                                                                                            
取得:80 http://archive.ubuntu.com/ubuntu xenial-security/main Translation-en [237 kB]                                                                                                         
取得:81 http://archive.ubuntu.com/ubuntu xenial-security/main amd64 DEP-11 Metadata [67.7 kB]                                                                                                 
取得:82 http://archive.ubuntu.com/ubuntu xenial-security/main DEP-11 64x64 Icons [68.0 kB]                                                                                                    
取得:83 http://archive.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [7,204 B]                                                                                                  
取得:84 http://archive.ubuntu.com/ubuntu xenial-security/restricted Translation-en [2,152 B]                                                                                                  
取得:85 http://archive.ubuntu.com/ubuntu xenial-security/restricted amd64 DEP-11 Metadata [200 B]                                                                                             
取得:86 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial/main i386 Packages [39.9 kB]                                                                                              
取得:87 http://archive.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [387 kB]                                                                                                     
取得:88 http://archive.ubuntu.com/ubuntu xenial-security/universe Translation-en [147 kB]                                                                                                     
取得:89 http://archive.ubuntu.com/ubuntu xenial-security/universe amd64 DEP-11 Metadata [108 kB]                                                                                              
取得:90 http://archive.ubuntu.com/ubuntu xenial-security/universe DEP-11 64x64 Icons [145 kB]                                                                                                 
取得:91 http://archive.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [3,460 B]                                                                                                  
取得:92 http://archive.ubuntu.com/ubuntu xenial-security/multiverse Translation-en [1,744 B]                                                                                                  
取得:93 http://archive.ubuntu.com/ubuntu xenial-security/multiverse amd64 DEP-11 Metadata [212 B]                                                                                             
取得:94 http://archive.ubuntu.com/ubuntu xenial-security/multiverse DEP-11 64x64 Icons [29 B]                                                                                                 
取得:95 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial/main Translation-en [13.0 kB]                                                                                             
無視:96 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial Release                                                                                                                      
取得:97 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial/main Sources [24.0 kB]                                                                                                
取得:98 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial/main amd64 Packages [57.1 kB]                                                                                         
取得:99 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial/main i386 Packages [56.6 kB]                                                                                          
取得:100 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial/main Translation-en [28.0 kB]                                                                                        
取得:101 http://ppa.launchpad.net/philip.scott/elementary-tweaks/ubuntu xenial/main amd64 Packages [816 B]                                                                                    
取得:102 http://ppa.launchpad.net/philip.scott/elementary-tweaks/ubuntu xenial/main i386 Packages [820 B]                                                                                     
取得:103 http://ppa.launchpad.net/philip.scott/elementary-tweaks/ubuntu xenial/main Translation-en [304 B]                                                                                    
取得:104 http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu xenial/main amd64 Packages [988 B]                                                                                          
取得:105 http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu xenial/main i386 Packages [992 B]                                                                                           
取得:106 http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu xenial/main Translation-en [492 B]                                                                                          
取得:107 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial/main amd64 Packages [1,556 B]                                                                                                
取得:108 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial/main i386 Packages [1,556 B]                                                                                                 
取得:109 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial/main Translation-en [928 B]                                                                                                  
無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages                                                                                                         
無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages                                                                                                          
無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages                                                                                                           
無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP                                                                                                      
無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja                                                                                                         
無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en                                                                                                         
無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata                                                                                                  
無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons                                                                                                     
無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages                                                                                                         
無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages                                                                                                          
無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages                                                                                                           
無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP                                                                                                      
無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja                                                                                                         
無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en                                                                                                         
無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata                                                                                                  
無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons                                                                                                     
無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages                                                                                                         
無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages                                                                                                          
無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages                                                                                                           
無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP                                                                                                      
無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja
無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en
無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata
無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons
無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages
無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages
無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages
無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP
無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja
無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en
無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata
無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons
無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages
無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages
無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages
無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP
無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja
無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en
無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata
無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons
エラー:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages
  404  Not Found
無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages
無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages
無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP
無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja
無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en
無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata
無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons
34.3 MB を 45秒 で取得しました (750 kB/s)
パッケージリストを読み込んでいます... 完了
W: リポジトリ http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial Release には Release ファイルがありません。
N: このようなリポジトリから取得したデータは認証できないので、データの使用は潜在的に危険です。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu/dists/xenial/main/binary-amd64/Packages の取得に失敗しました  404  Not Found
E: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。

$ heroku --version
heroku: コマンドが見つかりません

heroku: command not found

つらい。

だめだった対処法

まず、herokuがあるかどうか確認。

$ sudo updatedb

$ sudo locate heroku
/var/lib/apt/lists/cli-assets.heroku.com_apt_._InRelease
/var/lib/apt/lists/cli-assets.heroku.com_apt_._Packages

wgetで取ったはずなのにない。

次にaptのパッケージupdateミスのせいかと思い、いろいろ試した。

以下の記事を参考にした。

qiita.com

これでもapt updateがうまく行かず、ダメだった。

最終的な対処法

npmをつかってheroku cliを入れました。

npm install -g heroku-cliはもう使われてないそうなので、npm install -g herokuを入れる。

$ sudo npm install -g heroku
/usr/local/bin/heroku -> /usr/local/lib/node_modules/heroku/bin/run
+ heroku@7.16.6
added 375 packages from 264 contributors in 11.284s

$ heroku --version
heroku/7.16.6 linux-x64 node-v10.2.1

やっと解決。

終わりに

デプロイコストがないとはいいましたが、heroku環境作るのに一日も費やしてしまいました。

反省してます。

【備忘録】RailsでPostgreSQLを入れた際のエラー対処(Ubuntu)

f:id:rdwbocungelt5:20181010100712p:plain

どうもてぃです。

作成したwebアプリをherokuへあげるため、staging環境のみPostgreSQLを入れてテストをしようと思った次第です。

DB周りは安定してエラーが出るのでいつでも身構えて処理できますね。

実行環境

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

・
・
・
gem 'mysql', '>= 0.4.4', '< 0.6.0'
gem 'pg', group: :staging
・
・
・

staging環境のみPostgreSQL

本番環境はMySQLを使う予定(そもそもherokuでテスト運用するならPostgreSQLにすればよかった)。

bundle installすると上記のエラー。

エラー内容は以下。

Fetching pg 1.1.3
Installing pg 1.1.3 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/user/project/vendor/bundle/ruby/2.5.0/gems/pg-1.1.3/ext
/home/user/.rbenv/versions/2.5.0/bin/ruby -r ./siteconf20181005-30856-10oqjtj.rb extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/home/user/.rbenv/versions/2.5.0/bin/$(RUBY_BASE_NAME)
    --with-pg
    --without-pg
    --enable-windows-cross
    --disable-windows-cross
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/user/project/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/pg-1.1.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/user/project/vendor/bundle/ruby/2.5.0/gems/pg-1.1.3 for inspection.
Results logged to /home/user/project/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/pg-1.1.3/gem_make.out

An error occurred while installing pg (1.1.3), and Bundler cannot continue.
Make sure that `gem install pg -v '1.1.3'` succeeds before bundling.

In Gemfile:
  pg

gemをインストールしてみる

An error occurred while installing pg (1.1.3), and Bundler cannot continue.
Make sure that `gem install pg -v '1.1.3'` succeeds before bundling.

こんなこと書いてたので安直にgem installしてみる。

$ gem install pg -v '1.1.3'

Fetching: pg-1.1.3.gem (100%)
Building native extensions. This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

    current directory: /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/pg-1.1.3/ext
/home/user/.rbenv/versions/2.5.0/bin/ruby -r ./siteconf20181005-31001-qz27e2.rb extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/home/user/.rbenv/versions/2.5.0/bin/$(RUBY_BASE_NAME)
    --with-pg
    --without-pg
    --enable-windows-cross
    --disable-windows-cross
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0-static/pg-1.1.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/pg-1.1.3 for inspection.
Results logged to /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0-static/pg-1.1.3/gem_make.out

おんなじエラーですね。

よく見てみると、ここらへんがヒントっぽい。

Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header

てかそもそもlibpq-devって入ってるんかいな?

libpq-devを入れる

$ sudo apt install libpq-dev

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  comerr-dev krb5-multidev libgssrpc4 libkadm5clnt-mit9 libkadm5srv-mit9 libkdb5-8
提案パッケージ:
  krb5-doc krb5-user postgresql-doc-9.5
以下のパッケージが新たにインストールされます:
  comerr-dev krb5-multidev libgssrpc4 libkadm5clnt-mit9 libkadm5srv-mit9 libkdb5-8 libpq-dev
アップグレード: 0 個、新規インストール: 7 個、削除: 0 個、保留: 198 個。
485 kB のアーカイブを取得する必要があります。
この操作後に追加で 2,528 kB のディスク容量が消費されます。
続行しますか? [Y/n] Y
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libgssrpc4 amd64 1.13.2+dfsg-5ubuntu2 [54.5 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libkdb5-8 amd64 1.13.2+dfsg-5ubuntu2 [37.1 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libkadm5srv-mit9 amd64 1.13.2+dfsg-5ubuntu2 [51.3 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libkadm5clnt-mit9 amd64 1.13.2+dfsg-5ubuntu2 [36.7 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 comerr-dev amd64 2.1-1.42.13-1ubuntu1 [38.2 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 krb5-multidev amd64 1.13.2+dfsg-5ubuntu2 [113 kB]
取得:7 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpq-dev amd64 9.5.14-0ubuntu0.16.04 [154 kB]
485 kB を 1秒 で取得しました (313 kB/s)
以前に未選択のパッケージ libgssrpc4:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 329939 個のファイルとディレクトリがインストールされています。)
.../libgssrpc4_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ...
libgssrpc4:amd64 (1.13.2+dfsg-5ubuntu2) を展開しています...
以前に未選択のパッケージ libkdb5-8:amd64 を選択しています。
.../libkdb5-8_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ...
libkdb5-8:amd64 (1.13.2+dfsg-5ubuntu2) を展開しています...
以前に未選択のパッケージ libkadm5srv-mit9:amd64 を選択しています。
.../libkadm5srv-mit9_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ...
libkadm5srv-mit9:amd64 (1.13.2+dfsg-5ubuntu2) を展開しています...
以前に未選択のパッケージ libkadm5clnt-mit9:amd64 を選択しています。
.../libkadm5clnt-mit9_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ...
libkadm5clnt-mit9:amd64 (1.13.2+dfsg-5ubuntu2) を展開しています...
以前に未選択のパッケージ comerr-dev を選択しています。
.../comerr-dev_2.1-1.42.13-1ubuntu1_amd64.deb を展開する準備をしています ...
comerr-dev (2.1-1.42.13-1ubuntu1) を展開しています...
以前に未選択のパッケージ krb5-multidev を選択しています。
.../krb5-multidev_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ...
krb5-multidev (1.13.2+dfsg-5ubuntu2) を展開しています...
以前に未選択のパッケージ libpq-dev を選択しています。
.../libpq-dev_9.5.14-0ubuntu0.16.04_amd64.deb を展開する準備をしています ...
libpq-dev (9.5.14-0ubuntu0.16.04) を展開しています...
libc-bin (2.23-0ubuntu10) のトリガを処理しています ...
man-db (2.7.5-1) のトリガを処理しています ...
doc-base (0.10.7) のトリガを処理しています ...
doc-base ファイルを 1 個追加 を処理中...
scrollkeeper をドキュメントとして登録しています...
install-info (6.1.0.dfsg.1-5) のトリガを処理しています ...
libgssrpc4:amd64 (1.13.2+dfsg-5ubuntu2) を設定しています ...
libkdb5-8:amd64 (1.13.2+dfsg-5ubuntu2) を設定しています ...
libkadm5srv-mit9:amd64 (1.13.2+dfsg-5ubuntu2) を設定しています ...
libkadm5clnt-mit9:amd64 (1.13.2+dfsg-5ubuntu2) を設定しています ...
comerr-dev (2.1-1.42.13-1ubuntu1) を設定しています ...
krb5-multidev (1.13.2+dfsg-5ubuntu2) を設定しています ...
libpq-dev (9.5.14-0ubuntu0.16.04) を設定しています ...
libc-bin (2.23-0ubuntu10) のトリガを処理しています ...

うまくいった。

再びgem install

$ gem install pg -v '1.1.3'

Building native extensions. This could take a while...
Successfully installed pg-1.1.3
Parsing documentation for pg-1.1.3
Installing ri documentation for pg-1.1.3
Done installing documentation for pg after 0 seconds
1 gem installed

お、はいったぞ。

そして無事bundle installも通りました。

これからherokuへデプロイするぞー。

【備忘録】link_toでhtmlタグを渡したいとき

最近Railsの開発をはじめました。

どうもてぃです。

例えば <i class="fas fa-user">のアイコンに対して link_to を使ってリンク化したいとき、ありますよね。

そんな時は、 link_to(<path>, <styleとか>) do を使う。

前の会社でRailsをガシガシやってた時に使ったので、そういやそんなのあったなーてな感じで調べたら出てきた。

<%= link_to(users_path, style: 'color:#fff') do %>
  <i class="fas fa-user pa_r10"></i>アカウント設定
<% end %>


f:id:rdwbocungelt5:20181004140014p:plain

ヘッダーの右上に配置。

クリックしてアカウント設定画面に遷移できるようになりました。

【雑記】GCPにsshログインした時にチョコボ4匹を出現させた

Qiitaの転載です。

qiita.com

なぜやったか

AWSがあるならGCPもだろ! ってな感じで、Qiitaの記事見た瞬間に業務をほったらかしにしてやってしまいました。

全く後悔はありません、むしろ清々しいです。

チョコボを調達

https://github.com/dot-motd/final-fantasy こちらのgistを拝借させていただきました。

2018-09-27 11.38.13 からのスクリーンショット.png

設定の確認

$ ssh gcp-test

Last login: Tue Sep 25 17:26:06 2018 from s8.hfukuokafl1.vectant.ne.jp

     __ ____  _______ ___    _   _____   __________
    / //_/ / / / ___//   |  / | / /   | / ____/  _/
   / ,< / / / /\__ \/ /| | /  |/ / /| |/ / __ / /
  / /| / /_/ /___/ / ___ |/ /|  / ___ / /_/ // /
 /_/ |_\____//____/_/  |_/_/ |_/_/  |_\____/___/

    Version 8.4.0-3, Powered by Prime Strategy.

sshしたときにkusanagiを使っているので、それっぽいのが出てきます。

/etc/motdをrootユーザーで確認。

$ cat /etc/motd

     __ ____  _______ ___    _   _____   __________
    / //_/ / / / ___//   |  / | / /   | / ____/  _/
   / ,< / / / /\__ \/ /| | /  |/ / /| |/ / __ / /
  / /| / /_/ /___/ / ___ |/ /|  / ___ / /_/ // /
 /_/ |_\____//____/_/  |_/_/ |_/_/  |_\____/___/

    Version 8.4.0-3, Powered by Prime Strategy.

これですね。

試しに書き込んで、もう一度ssh接続してみる。

$ vim /etc/motd
     __ ____  _______ ___    _   _____   __________
    / //_/ / / / ___//   |  / | / /   | / ____/  _/
   / ,< / / / /\__ \/ /| | /  |/ / /| |/ / __ / /
  / /| / /_/ /___/ / ___ |/ /|  / ___ / /_/ // /
 /_/ |_\____//____/_/  |_/_/ |_/_/  |_\____/___/

    Version 8.4.0-3, Powered by Prime Strategy.

     テストでやんす

# sshログアウト
$ exit 

$ ssh gcp-test
Last login: Tue Sep 25 17:26:06 2018 from s8.hfukuokafl1.vectant.ne.jp

     __ ____  _______ ___    _   _____   __________
    / //_/ / / / ___//   |  / | / /   | / ____/  _/
   / ,< / / / /\__ \/ /| | /  |/ / /| |/ / __ / /
  / /| / /_/ /___/ / ___ |/ /|  / ___ / /_/ // /
 /_/ |_\____//____/_/  |_/_/ |_/_/  |_\____/___/

    Version 8.4.0-3, Powered by Prime Strategy.

     テストでやんす

じゃあこれに直接書き込めば良さそう。

設定

ちゃんとcurlで取れているか確認。

2018-09-27 11.46.47 からのスクリーンショット.png

おっけい。

$ curl -s https://gist.githubusercontent.com/makocchi-git/9775443/raw/70b3e0250a0d07be3c4dcdaed3dff5662e2a7ab4/chocobo-allstar.txt | sudo tee -a /etc/motd

上記のコマンド実行後、最後sshで接続。

2018-09-27 11.51.57 からのスクリーンショット.png

問題点

AWSのようにupdate-motd.dがなかったので、サーバーを再起動すると設定が消えちゃう可能性があります(試してない)。

特に調査せずやったので、後日暇があればやってみようとおもいます。

現状再起動をほとんどやらないサーバーでやったので、今回はこのままにしときます。

チョコボ可愛い

スライム可愛い

チョコボも可愛い

今度上司が接続するサーバーにチョコボ仕込んどきます。

追記

はぐれメタルも可愛い。

2018-09-27 14.38.39 からのスクリーンショット.png

【メモ】docker runにおけるオプションまとめ

どうもってぃです。

dockerやらなかったらすぐわすれちゃいますよね。

なので、復習をかねて docker run時のオプションについてまとめました。

コンテナの生成 & 起動

docker runでコンテナの生成 & 起動を行います。

$ docker run [オプション] イメージ名[:タグ名][引数]

この時のオプションを以下にまとめる。

コンテナの生成・起動(単純なオプション)

-a : 標準入力、標準出力、標準エラー出力にアタッチする

--cidfile="ファイル名" : コンテナIDをファイルに出力する

-d, --detach=false : コンテナを生成し、バックグラウンドで実行する

-i, --interactive=false : コンテナの標準入力を開く

-t, --tty=false : tty(端末デバイス)を使う

--name : コンテナ名

コンテナのバックグラウンド実行

-d, --detach=false : 同上

-u, --user="ユーザー名" : ユーザー名を指定する

--restart=[no | on-failure | on-failure:回数n | always] : コマンドの実行結果によって再起動を行うオプション
  no : 再起動しない
  on-failure : 終了ステータスが0出ない時に再起動する
  on-failure:回数n : 終了ステータスが0出ない時にn回再起動する
  always : 常に再起動する

--rm : コマンド実行完了後にコンテナを自動で削除する

コンテナのネットワーク設定

--add-host=[ホスト名:IPアドレス] : コンテナの/etc/hostsにホスト名とIPアドレスを定義する

--dns=[IPアドレス] : DNSサーバーのIPアドレス指定

--expose=[ポート番号] : 指定したレンジのポート番号を割り当てる

--mac-address=[MACアドレス] : コンテナのMACアドレスを指定する

--net=[bridge | none | conrainer:<name|id> | host] : コンテナのネットワークを指定する
  bridge : ブリッジ接続を行う
  none : ネットワークに接続しない
  container:[name|id] : 他のコンテナのネットワークを使う
  host : コンテナがホストOSのネットワークを使う

-h, --host="ホスト名" : コンテナ自身のホスト名を指定する

-p, --publish-all=[true | false] : ホストの任意のポートをコンテナに割り当てる

--link=[コンテナ名:エイリアス] : 他のコンテナからアクセスするときの名前

リソースを指定してコンテナを生成・実行

-c, --cpu-shares=0 : CPUの使用の配分

-m, --memory=[メモリ使用量] : 使用するメモリを制限して実行する

-v, --volume=[ホストのディレクトリ]:[コンテナのディレクトリ] ホストとコンテナのディレクトリを共有

コンテナを生成・起動する環境を指定

-e, --env=[環境変数] : 環境変数を指定する

--env-file=[ファイル名] : 環境変数をファイルから設定する

--privileged=[true | false] : 特権モードで起動する(ホストのカーネル昨日も操作可)

--read-only=[true | false] : コンテナのファイルシステムを読み込み専用にする

-w, --workdir=[パス] : コンテナの作業ディレクトリを指定する

おわり

おそらくすべて覚えるのは難しいので、よく使われるものを中心に覚えていくのがいいかと思います。

僕も結構忘れてたので覚え直します。