"相手サーバにsshでログインして・・・"という実装の動作確認をローカル開発環境で完結させたい時に。
-
鍵ファイルを作っておく
cd /path/to/project/local-ssh-server ssh-keygen -t rsa -b 4096 -C "localtest@example.com" -f id_rsa_localtest mv id_rsa_localtest.pub authorized_keys
-
/path/to/project/local-ssh-server/Dockerfileを作る
FROM amazonlinux:2 RUN yum install -y shadow-utils \ && yum install -y sudo \ && yum install -y openssh-server RUN useradd localtest RUN mkdir /home/localtest/.ssh && chmod 700 /home/localtest/.ssh ADD authorized_keys /home/localtest/.ssh/authorized_keys RUN chmod 600 /home/localtest/.ssh/authorized_keys RUN chown -R localtest:localtest /home/localtest/.ssh WORKDIR /home/localtest/
amazonlinux:2なのは、使い慣れてるから、というだけの理由です。
-
/path/to/project/Dockerfileに以下を追加
sshクライアント
= 開発プログラム稼働サーバ
=> /path/to/project/Dockerfileでビルド
を想定。RUN mkdir /root/.ssh && chmod 700 /root/.ssh ADD ./local-ssh-server/id_rsa_localtest /root/.ssh/id_rsa_localtest
-
/path/to/project/docker-compose.ymlを更新
local-ssh-server:
以下を追加version: '3' services: project_name: container_name: "project_name" build: ./ ・ ・ ・ local-ssh-server: container_name: "local-ssh-server" build: ./local-ssh-server/ privileged: true environment: TZ: Asia/Tokyo ports: - "22:22" command: /sbin/init
-
確認
cd /path/to/project/ docker-compose up -d --build docker exec -it project_name /bin/bath
project_nameコンテナにログインして、以下でssh接続できればOK!
ssh -i /root/.ssh/id_rsa_localtest localtest@local-ssh-server