Jeinkins/Dockerコマンドを使用してAWS EC 2サーバに配備


この実践には、2つのAWS EC 2インスタンスが使用されます.
1つは、実際に導入されたworker-instance(mooh2jj/cpu-bound-application-1)です.
もう1つはjenkinsをインストールしたjenkins-inspaceです.
カスタム8080포트およびHTTP 80포트も、それぞれのネットワークインバウンドルールに追加される.
AWS EC 2インスタンスのインストール方法は、このブログでご覧ください.
https://velog.io/@mooh 2 j/AWS-サーバ環境-AWS-EC 2の作成

導入するプロジェクトDockerfile


プロジェクトルートディレクトリにDockerfileを作成してdockerイメージを実行します.mooh2jj/cpu-bound-application-1ドックファイル
Dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
springfoot dockerガイドを参照してください
https://spring.io/guides/gs/spring-boot-docker/

work-instanceにdockerをインストールする


ubuntu(Debian버전)にdockerをインストールするには、次のコマンドに従います.
正しい取り付け方法は必ずdocker 가이드문서で確認して取り付けてください.
https://docs.docker.com/engine/install/debian/
インストール方法はこのブログを参照できます.
https://velog.io/@mooh 2 j/AWS-EC 2-Docker-インストール

jenkinsインスタンスにjenkinsをインストールする


JenkinsをインスタンスとするCI/CDシステムをインストールします.
もちろんdockerを使用してjenkinsをインストールできますが、ここでは인스턴스에 바로 jenkins를 설치하는 방식を使用します.
AWS EC 2インスタンスにjenkinsをインストールする方法については、このブログを参照してください.
https://velog.io/インストール@mooh 2 jj/jenkins-AWS-EC 2

publish-of-sshを手動でインストール

publish-over-sshを手動で取り付ける必要があります.(現在プラグインとしてインストールできません)
https://archives.jenkins-ci.org/plugins/publish-over-ssh/latest/
このページにアクセスしてダウンロードし、手動でインストールします.
Jenkins管理>플러그인 관리>고급>플러그인 올리기
ファイルを選択し、올리기ボタンを押します.


インストールが完了すると、
Jenkins管理から시스템 설정に入ります.

一番下はpublish-over-sshフォーム画面です.

Jenkins秘密鍵&公開鍵の作成


1)jenkins秘密鍵の生成&公開鍵


ジェンキンスは、work-instanceに配置用の設定を登録するために、ジェンキンスに秘密鍵と公開鍵を作成する必要があります.
次の命令を下すと出てきた.
# `ssh-keygen -t rsa`가 안될 때 다음 명령어로
ssh-keygen -t rsa -b 4096 -m PEM
💥注意)秘密鍵(id_rsa)の最初の段落のアルファベットは大文字でなければなりません.


確認もあります.
cd .ssh

vi id_rsa.pub

2)jenkins公開鍵worker-instaspums登録


ジェンキンス公開鍵(id_rsa.pub)をworker-instanceの.ssh/authorized_keysに追加します.
# worker-instacne에서 ~/.ssh 권한설정
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# jenkins-instance의 공개키를 worker-instance 인증키에 등록
vi ~/.ssh/authorized_keys

3)jenkins秘密鍵を使用してpublish-of-sshフォーム画面にworker-instanceをSSHサーバとして登録する


次いでjenkins−instancedml秘密鍵(id_rsa)の内容をコピーする.
 cat ~/.ssh/id_rsa
publish-over-sshフォーム画面のKey画面にコピー貼り付けを行います.

そして、次の4つのフォームにも情報を入れます.
  • Name:使用するSSHサーバの名前を入力します.
  • ホスト名:実際に接続するリモートサーバip、接続パスを入力します.ex)パブリックIPv 4アドレス:3.37.87.X
  • Username:接続するリモート・サーバのユーザー名.whoami命令語から分かる.
  • リモート・ディレクトリ:リモート・サーバに接続されているディレクトリ.pwd命令語から分かる.
  • 💥できない場合は、このようなエラーメッセージが表示される可能性があります.
    # error 문구
    jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config

    この場合、id_rsaid_rsa.pubは正しく入力されていません.ちゃんとコピーして貼り付けておけばいいです.
    もしかすると、ssh-keygen -t rsaコマンド言語がインストールされているかどうか見てみましょう.この命令より.ssh-keygen -t rsa -b 4096 -m PEMのはずです.

    DockerHubイメージの登録


    ジェンキンスがSSHサーバに配備したjarファイルをdockerとして実行
    DockerHubに画像を登録します.
    Gitに登録されている項目名をそのまま入れましたmooh2jj/cpu-bound-application-1
    また、shell入力のコマンドsudo 명령을 젠킨스에서 시도하려면 권한を付与しなければならない.
    解決策はこのブログの下部を見てください.
    https://velog.io/インストール@mooh 2 jj/jenkins-AWS-EC 2
    💥dockerインストール後/var/run/docker.sock発生permission deniedこのブログを参照してください.https://velog.io/@mooh 2 j/AWS-EC 2-Docker-インストール

    Jenkins Itemの構成


    SSHで配備jarファイルを送信する準備ができました.
    次のJenkins Itemをクリックし、Freestyle projectボタンを押します.빌드 후 조치に入ります.
    ここで、NameにはWorkerインスタンス名が含まれています.
    Execコマンドには、次のコマンドが含まれます.
    nohup docker run -p 8080:80 mooh2jj/cpu-bound-application-1 > /dev/null 2>&1 &
    Build Nowをクリックし、コンソール出力で確認します.
    結果が成功すると、このような画面が表示されます.

    worker-instanceのurlで確認できます.

    ❗エラーが発生した場合は、ログファイルを作成することをお勧めします./dev/nullnohub.outに変更すると、ログの問題を確認できます.
    sudo nohup docker run -p 8080:8080 mooh2jj/docker-jenkins-github-test > nohup.out 2>&1 &
    このように見ることができます
    # 꼬리부터 보는 명령어
    cd ~
    tail -f nohup.out

    リファレンス


  • https://junghwanta.tistory.com/45?category=857298

  • ソース:https://github.com/mooh2jj/cpu-bound-application-1.git