質問: 閲覧ありがとうございます。 先日dockerを使いながら、rails tutorialを終え、Heroku official Reference:Container Registry and Runtimeリンク内容等を参考に、rails tutorialの成果物をherokuでデプロイする事ができました。 ### 問題点 インフラ構築を勉強したいので、herokuではなくvpsでデプロイしたいのですが、VPSを使った時のデプロイ手順を、うまく検索が出来ず困ってます。 『docker さくらvps』っとググると、開発環境開発や本番環境構築。『docker デプロイ』っとググると、AWSでのデプロイ方法が検索結果と出てきます。 もしかしたら、デプロイ方法について書いているが、私の理解が及ばないため気付けていないのかもしれませんが。。。 手順が分かれば、それに必要な書籍を買うことを出来るのですが、立ち読みした書籍は、仮想環境を利用しない場合でのデプロイ方法で、買っていいのかどうか迷っている最中です。 ### 疑問点 dockerを使うのは、開発&本番環境構築のためであり、デプロイする時にはdocker-compose.ymlに書いた環境を自分で作る? quickstart: Compose and Railsリンク内容をベースにdockerを構築しました。 ``` docker-compose.yml version: '2' services: db: image: postgres web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/myapp ports: - "3000:3000" depends_on: - db ``` vpsで環境構築する場合には、centos等のサーバーosやpostgresqlを自分でダウンロード&構築して、dockerを使って開発したコードの必要な部分を抽出して、サーバーにアップロードする? おかしな質問ですが、よろしくお願いいたします! ### 追記 私が言っている、docker開発とは リンク内容を参照しながら、ローカルに環境を構築し、 ``` docker-compose run --rm web rails g controller *** docker-compose up -d & docker attach web ``` 等を手打ちしました。 rails tutorial の成果物に対して、docker commit等のコンテナイメージ化はherokuにデプロイするときにしました。 ### 追記2 **ローカル環境** 1. dockerfileやdocker-compose.ymlでイメージ(railsやpostgreSQL等)からコンテナを作成し、ローカル環境でコードを打つ 2. 成果物に対して、一つのイメージを作成(散在していたコンテナを一つのイメージにまとめる) **サーバー** 1. サーバーにos(centosやubuntu)をダウンロード 2. サーバーosコマンドで、docker installを行い、dockerをダウンロード 3. サーバーにあるdockerに、ローカルで作成した成果物のイメージをアップロードする っという理解でよろしいですか? 丁寧に説明して頂いたのに、間違っていたら申し訳ございません。 よろしくお願いいたします。
回答: つまりは、「ローカルで構築したものをdockerのrailsを使って起動したい」ということですね。 それならばvolumeを使ってdockerの中に成果物を組み合わせるのではなく、**最初から成果物が入った状態のdockerイメージを自作**することをおすすめします。 ちなみにDockerはDockerfileというモノを書くことで、イメージ(railsやapache)を自作できます。 なので手順としては 1. railsイメージを元に成果物が入っているDockerfileを書く。 2. docker buildでdockerfileをビルドしてみる。すると自作のイメージを作ることができる。 3. 本番環境にイメージを持っていき、docker composeで設定等をして起動する。 以上のようなカタチになると思います。あまり私が全部書いちゃうのもアレなので、行き詰まったところあればまたコメントください。