設定手順
- portsに22を指定する(ポートフォーディング用のポートを指定する)
- extra_hostsに外部サーバー用のサーバーのIPを指定する
version: "3"
services:
app:
container_name: app-service
build:
context: ./node
volumes:
- ../app:/srv/app
command: /bin/sh -c "entrypoint.sh"
ports:
- "3000:3000"
- "22:22"
networks:
- hoge-network
extra_hosts:
- "db_test:192.168.0.10"
Dockerfileファイルの設定
- openssh-clientをインストールする
- ポートフォーワーディング時に利用する公開鍵をDocker内に追加する
- アプリケーション起動用のコマンドとポートフォーワーディングの設定を追加したシェルスクリプトをDockerfileに設定する
FROM node
ENV LANG C.UTF-8
ENV TZ Asia/Tokyo
RUN apt-get update && \
apt-get install -y vim less procps libssl-dev curl python make g++ && \
openssh-client
# 公開鍵を設定する
RUN mkdir -p /home/node/.ssh
ADD key.pem /home/node/.ssh
ADD config /home/node/.ssh
RUN chown node:node -R /home/node
RUN chmod 700 /home/node/.ssh
RUN chmod 600 /home/node/.ssh/key.pem
RUN chmod 600 /home/node/.ssh/config
# yarn install / dev とポートフォーワーディングの設定
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT "/entrypoint.sh"
- oStrictHostKeyChecking=noで接続確認のメッセージをスキップすることができる。
#entrypoint.sh
#!/bin/sh
yarn install
yarn dev &
ssh -oStrictHostKeyChecking=no -N -L 3307:hoge.ap-northeast-2.rds.amazonaws.com:3306 -i ~/.ssh/key.pem -p 22 ec2-user@192.168.0.10
ポートフォーワーディングがすぐに切断されるため、下記の設定ファイルをdocker内に追加する
Host *
ServerAliveInterval 15