🖥

docker + capistrano で deploy の動作確認をする

2023/08/26に公開

ssh接続サーバーをdockerで構成

公式チュートリアルを参考に ssh 接続可能なサーバーを立てておく。
この例ではrootユーザーでパスワード認証する。

Dockerfile
FROM ubuntu:16.04

RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

https://docs.docker.com/engine/examples/running_ssh_service/#build-an-eg_sshd-image

イメージ作成

$ docker image build . -t ssh_server

port を指定してコンテナ実行

$ docker run -d -p 10000:22 ssh_server

docker コンテナから Github に接続できるように、秘密鍵を置いておく。

Githubには手元から公開鍵でssh接続できる前提。

方法は何でも良い。この例では docker cp コマンドで、直接手元からコピーする。

$ docker cp ~/.ssh/id_rsa_github_aiming コンテナID:/root/.ssh

capstrano を インストール

$ gem install capistrano
$ cap install

capistrano の設定変更

適当なレポジトリを指定する。
この例では https://github.com/github/hub を使う。

ちなみにレポジトリの中身は何でも良い。
(レポジトリ側にcapistrano関係のファイルは必要ない)

set :repo_url, "git@github.com:github/hub.git"

手元からサーバー ( docker コンテナ ) に繋ぐための設定を書く。

# The server-based syntax can be used to override options:
# ------------------------------------
server "localhost",
  user: "root",
  roles: %w{web app},
  ssh_options: {
    forward_agent: false,
    auth_methods: %w(password),
    port: 10000,
    password: "screencast"
  }

デプロイを実行

$ cap production deploy

dockerコンテナに deploy されているのを確認

root@8af7b375dc67:/# ls -la /var/www/my_app_name/
total 24
drwxr-xr-x 5 root root 4096 May 11 06:52 .
drwxr-xr-x 3 root root 4096 May 11 06:52 ..
lrwxrwxrwx 1 root root   44 May 11 06:52 current -> /var/www/my_app_name/releases/20180511065207
drwxr-xr-x 3 root root 4096 May 11 06:52 releases
drwxr-xr-x 7 root root 4096 May 11 06:52 repo
-rw-r--r-- 1 root root  106 May 11 06:52 revisions.log
drwxr-xr-x 2 root root 4096 May 11 06:52 shared

環境

  • Capistrano Version: 3.10.2 (Rake Version: 12.0.0)
  • Mac OS X Sierra
  • Docker version 18.03.0-ce, build 0520e24

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2018-05-11

Discussion