Github Action + Docker
8485 ワード
このブログはたくさん参考になりました
私が今使っているプロジェクターでDockerのGithubアクションを使って
Github Actionは最も代表的なCI/CDツールの1つであり、コードを自動的に統合して導入することで、導入を簡素化できるという利点があります.ジェンキンスを使おうと思っていたのですが、ジェンキンスを使おうとすると、もう一つジェンキンスのために用意しなければならない例があり、Github Actionも経験があり、ちなみに~(当時はDockerを使わずにS 3を使っていました)
じゃあLet'sgo~🏃♀️🏃♀️🏃♀️
主支路におけるプッシュ Github Actionでは、 を「ビルドバックドック」センターにプッシュします.の例では、イメージをdocker hubに引き寄せ、 を実行する.
リポジトリでActionsをクリックして、複数のテンプレートを選択します.そこからGradleテンプレートを選択!
これにより、ルートディレクトリに
最初は
そこで考えてみると、すでにこのサーバにポート転送80->8080を設定していたので、外部接続は無条件に8080に入り、サーバ内もDockerコマンドで80ポートしか開かなかったので、接続は拒否されました!dockerコマンドで8080を開くように設定したら、解決しました~🌻
インスタンスにdockerをインストールします.Ubuntu環境ですapt-getを使います
導入用の鍵を生成!
この鍵は、接続インスタンスのようにssh鍵ペアも使用される.
ssh-actionを使用してGithubアクションを展開するための鍵を生成
readmeドキュメントに示すように、rsa方式で鍵ペアが作成され、公開鍵はインスタンスに
公開鍵エラー解決策-2
最初はインスタンスを接続するための公開鍵をインスタンスの
Googleはもともとauthorized keysに格納できるが、私の場合、サーバに格納すべき公開鍵は複数の特殊な場合である.
次にDockerfileを作成し、Docker hubに画像をプッシュします.
完成したコードをmainにプッシュ?!
長らく盛名を受けている.😭
私が今使っているプロジェクターでDockerのGithubアクションを使って
Github Actionは最も代表的なCI/CDツールの1つであり、コードを自動的に統合して導入することで、導入を簡素化できるという利点があります.ジェンキンスを使おうと思っていたのですが、ジェンキンスを使おうとすると、もう一つジェンキンスのために用意しなければならない例があり、Github Actionも経験があり、ちなみに~(当時はDockerを使わずにS 3を使っていました)
じゃあLet'sgo~🏃♀️🏃♀️🏃♀️
ながれていり
Githubアクション用のファイルの作成
リポジトリでActionsをクリックして、複数のテンプレートを選択します.そこからGradleテンプレートを選択!
これにより、ルートディレクトリに
/.github/workflow/gradle.yml
ファイルを作成できます.# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
name: Java CI with Gradle
# main 브랜치에 푸시하거나 pr 하면 이 플로우 실행
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
# jdk 11 set up
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'temurin'
# gradle 로 src build
- name: Build with Gradle
uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
# Docker에 빌드 된 이미지 push
- name: Docker build
run: |
docker login -u ${{ secrets.USERNAME }} -p ${{ secrets.PASSWORD }}
docker build -t spring-cicd .
docker tag spring-cicd s2moon98/spring-cicd:${GITHUB_SHA::7}
docker push s2moon98/spring-cicd:${GITHUB_SHA::7}
# instance에 배포
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: 146.56.130.233
username: ubuntu
key: ${{ secrets.PRIVATE_KEY }}
envs: GITHUB_SHA
script: |
docker pull s2moon98/spring-cicd:${GITHUB_SHA::7}
docker tag s2moon98/spring-cicd:${GITHUB_SHA::7} spring-cicd
docker stop server
docker run -d --rm --name server -p 8080:8080 spring-cicd
ポート関連エラー解決最初は
docker run -d --rm --name server -p 80:8080 spring-cicd
でdocker psを試してみるとブイが外部から接続できないという問題がありました.グーグルにも私のような状況はありません.ただし、curl localhost:80はインスタンスに接続されています.そこで考えてみると、すでにこのサーバにポート転送80->8080を設定していたので、外部接続は無条件に8080に入り、サーバ内もDockerコマンドで80ポートしか開かなかったので、接続は拒否されました!dockerコマンドで8080を開くように設定したら、解決しました~🌻
サーバインスタンスでの作業
インスタンスにdockerをインストールします.Ubuntu環境ですapt-getを使います
docker --version
に取り付けられていることを確認した後.導入用の鍵を生成!
この鍵は、接続インスタンスのようにssh鍵ペアも使用される.
ssh-actionを使用してGithubアクションを展開するための鍵を生成
readmeドキュメントに示すように、rsa方式で鍵ペアが作成され、公開鍵はインスタンスに
.ssh/authorized_keys2
に繰り返し貼り付けられる.そして要求に従ってchmodを使用して権限を設定します公開鍵エラー解決策-2
最初はインスタンスを接続するための公開鍵をインスタンスの
.ssh/authorized_keys
に保存していたので、もちろんこのファイルは公開鍵を保存するファイルだと思って、ここに追加して保存しました.でもずっとpublic keyが見つからなかったのでエラーでreadmeドキュメントを見たらauthorized_keys2
ドキュメントだった~公式ドキュメントをしっかり見てね~!Googleはもともとauthorized keysに格納できるが、私の場合、サーバに格納すべき公開鍵は複数の特殊な場合である.
次にDockerfileを作成し、Docker hubに画像をプッシュします.
FROM openjdk:11.0.10-jre-slim-buster
ARG JAR_FILE=build/libs/picture-diary-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
構築したjarファイルをコピーして実行する、かなり簡単なDockerfileです.完成したコードをmainにプッシュ?!
長らく盛名を受けている.😭
Reference
この問題について(Github Action + Docker), 我々は、より多くの情報をここで見つけました https://velog.io/@s2moon98/Github-Action-Dockerテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol