概要
AWS EC2(amazon linux)でsshログインして動作するものの動作テスト環境をdockerで構築するテスト。
ansibleやcapistrano,fabricなどssh経由でコマンドを送り込んで実行する系ツールの動作テストをローカル環境だけでやりたい場合を想定しています。
事前準備
公開キーを作成
公開キーを以下のように作ります。
ssh-keygen -t rsa -b 4096 -C "m71203@gmail.com" -f authorized_keys
Dockerfileとdocker-composeファイルを作成
以下のようなDockerfileとdocker-compose.ymlを用意。
コンテナが1つなのでdocker-compose.ymlは必要ないのですが、どのようにコンテナを起動したかのメモかわりになるので残りしています。
Dockerfileの最後のCMDはtailしてコンテナを終了しないようにする為のものです。
Dockerfile
FROM amazonlinux:latest
ARG USER
RUN yum -y update && yum -y install openssh-server && yum -y install sudo
RUN adduser $USER && mkdir -p /home/$USER/.ssh && chown $USER:$USER /home/$USER/.ssh && chmod 0700 /home/$USER/.ssh
ADD ./authorized_keys.pub /home/$USER/.ssh/authorized_keys
RUN chown $USER:$USER /home/$USER/.ssh/authorized_keys && chmod 0600 /home/$USER/.ssh/authorized_keys
RUN echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
CMD /etc/init.d/sshd start && tail -f /dev/null
docker-compose.yml
version: '2'
services:
app:
build:
context: .
args:
USER: user1
container_name: al_test
stdin_open: true
tty: true
ports:
- "2022:22"
volumes:
- .:/share
イメージ作成&コンテナ作成と起動
以下のコマンドでイメージとコンテナを作成。
docker-compose build
docker-compose up -d
sshでのログイン
下のようなコマンドでsshログインできるようになります。
ssh -i authorized_keys user1@localhost -p 2022