작업에서 Docker 컨테이너 사용 - GitHub Actions
GitHub Actions를 처음 사용하는 경우 다음 기사를 읽어 보시기 바랍니다.
이전 기사에서 설명한 것처럼 GitHub Actions가 GitHub Hosted Runner로 제공하는 운영 체제를 사용하여 가상 머신에서 워크플로를 실행할 수 있습니다.
도커 컨테이너 사용
가상 머신에 설치될 도커 컨테이너를 사용할 수 있으며 가상 머신에서 직접 실행하는 대신 워크플로가 특정 컨테이너에서 실행됩니다.
이것은 Docker Hub의 이미지일 수 있습니다.
도커 허브
Docker Hub는 사용자가 컨테이너 애플리케이션을 생성, 관리 및 제공할 수 있는 플랫폼입니다. Docker Hub는 가장 큰 컨테이너 이미지 라이브러리입니다.
링크: Docker Hub
이미지(예: 노드)를 클릭하면 해당 태그가 있는 모든 dockerfile 링크를 볼 수 있습니다.
사용하는 방법 ?
당신은 제공해야합니다,
Publisher-dockerhub-username : "container:"아래에 이미지 태그가 있는 docker-image-tag
name: workflow-name
on: push
jobs:
job-name:
runs-on: ubuntu-latest
container:
image: dockerhub-username:docker-image-tag
예시:
name: container
on: push
jobs:
node-docker:
runs-on: ubuntu-latest
container:
image: node:14.15.0-alpine3.12
또한 환경 변수, 포트 및 옵션 등과 같은 다른 매개 변수를 제공할 수 있습니다.
name: container
on: push
jobs:
node-docker:
runs-on: ubuntu-latest
container:
image: node:14.15.0-alpine3.12
#env:
# ENV1: Available to this container only
#ports: To expose our container
#options: --cpus 1 --host
따라서 다음 그림에서는 단계가 가상 머신에서 직접 실행되는 대신 dockerhub 이미지로 초기화한 컨테이너 내에서 실행되고 있음을 확인할 수 있습니다.
name: container
on: push
jobs:
node-docker:
runs-on: ubuntu-latest
container:
image: node:14.15.0-alpine3.12
steps:
- name: Log the node version
run: |
node -v
cat /etc/os-release
여기에서 이미지의 노드 버전과 도커 컨테이너의 일부 운영 체제 정보를 에코합니다.
산출:
서비스로 실행할 여러 컨테이너를 지정할 수도 있습니다.
여러 서비스를 실행하는 애플리케이션이 있는 경우 가상 머신에서 실행하려면 여러 이미지가 필요할 수 있습니다. 일반적으로 우리는 Docker-Compose를 사용하여 이와 같은 작업을 수행하지만 **GitHub Actions에는 이러한 유형의 애플리케이션을 실행하는 유사한 방법이 있습니다.
작업에서 여러 도커 컨테이너를 실행합니다.
여기에 컨테이너를 두는 대신 "서비스:"를 제공할 수 있습니다.
서비스를 "services:"아래의 도커 이미지로 제공할 수 있으며 가상 머신에서 별도의 컨테이너로 실행됩니다.
name: workflow-name
on: push
jobs:
job-name:
runs-on: ubuntu-latest
services:
service-name-1:
image: dockerhub-username:docker-image-1
ports:
- 3001:3000
service-name-2:
image: dockerhub-username:docker-image-2
ports:
- 4001:4000
steps:
- name: Get from service-1
run: http://localhost:3001/api/users
- name: Get from service-2
run: http://localhost:4001/api/items
- name: post a user example
run: "curl -x POST http://localhost:3001/api/user -H 'Content-Type: application/json' -d '{\"username"\: \"hello"\, \"address"\: "sampleaddress"}' "
여기에서는 가상 머신 내부에 service-1 및 service-2에 대한 두 개의 컨테이너를 생성합니다.
이 두 컨테이너 간에 통신하기 위해 서비스 이름을 앱의 호스트 이름으로 사용할 수 있습니다.
개별 단계에서 도커 컨테이너를 실행합니다.
GitHub Actions에서는 다른 단계에서도 다른 컨테이너를 사용할 수 있습니다.
예 1:
type -a echo
echo is /bin/echo
예 2:
type -a node
node is usr/local/bin/echo
우분투에서 이 "type -a "명령을 사용하여 설치된 도구 및 소프트웨어의 일부 진입점을 찾으십시오.
예시:
name: container
on: push
jobs:
node-docker:
runs-on: ubuntu-latest
container:
image: node:14.15.0-alpine3.12
steps:
- name: Log the parent container node version
run: |
node -v
# Echo the node version of the parent container
- name: Log the step container node version
uses: docker://node:12.14.1-alpine3.10
with:
entrypoint: usr/local/bin/echo
args: -v
# Echo the node version of this step container based on this 12.14.1-alpine3.10 image
- name: Step with docker to echo a string
uses: docker://node:12.14.1-alpine3.10
with:
entrypoint: /bin/echo
args: Hello Docker !
워크플로 파일을 저장소로 푸시하고 저장소의 작업 창을 확인합니다.
출력:
v14.15.0
v12.14.1
Hello Docker !
👉 다음은 무엇입니까?
감사합니다
여러분 모두가 이것으로부터 무언가를 즐기고 배웠기를 바랍니다. 토론 섹션에서 귀하의 의견과 제안을 알려주십시오.
👉 방문해주세요 - https://mihinduranasinghe.com/
Reference
이 문제에 관하여(작업에서 Docker 컨테이너 사용 - GitHub Actions), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mihinduranasinghe/using-docker-containers-in-jobs-github-actions-3eof텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)