Goals

라라벨 프레임워크로 개발된 애플리케이션을 Github Action을 통해 CI(Continuous Integration) 수행. Docker Hub 저장소에 Push 해보기.

Dev Environments

도커(Docker)와 상호작용을 하기위해 라라벨에서 기본으로 제공하는 Sail 명령어를 사용한다. 아래 이미지는 $ sail artisan about 을 실행하여 현재 내 개발환경에 대한 상태를 출력하였다. 버전만 참고하길 바란다.

  • Laravel 9.27.0
  • PHP Version 8.1.9
  • Composer Version 2.4.1

sail artisan about

Docker 파일 구성하기

Sail의 기본 목적이 Docker를 구성하고 상호작용을 도와주는 도구로써 다음의 명령어를 통해 기본적인 Docker 파일을 도출할 수 있다.

$ sail php artisan sail:publish

현재 컨텍스트에서 ./docker/[version]/Docker 파일들이 생길 것이다. 하지만 해당 파일을 바로 사용하게되면 다음과 같은 에러가 발생한다.

groupadd: invalid group ID 'sail'

./docker/8.1/Docker 파일을 열어 아래와 같이 수정하고 시작하자.

ARG WWWGROUP=1000

docker-compose.yml 파일에는 도출된 Docker 파일을 바라볼 수 있게 다음과 같이 변경될 것이다.

# For more information: https://laravel.com/docs/sail  
version: '3'  
services:  
    laravel.test:  
        build:  
            context: ./docker/8.1  
            dockerfile: Dockerfile  
...

Github, workflows 구성하기

main 브랜치에 push된 순간 build 되도록 ./.github/workflows/docker.yml 파일을 생성하고 아래와 같이 내용을 구성한다.

name: CI  

on:  
  push:  
    branches:  
      - main  

jobs:  
  build:  
    runs-on: ubuntu-latest  
    steps:  
      -  
        name: Checkout Github Action  
        uses: actions/checkout@v2  
      -  
        name: Login to DockerHub  
        uses: docker/login-action@v1  
        with:  
          username: ${{ secrets.DOCKER\_HUB\_USERNAME }}  
          password: ${{ secrets.DOCKER\_HUB\_ACCESS\_TOKEN }}  
      -  
        name: Build and Push  
        uses: docker/build-push-action@v2  
        with:  
          context: ./docker/8.1/  
          push: true  
          tags: ${{ secrets.DOCKER\_HUB\_USERNAME }}/thesolo:latest

${{ secrets.* }} 비밀키 관련하여 Github 저장소의 Setting에서 설정가능하다.

로컬 이미지 빌드

Docker 파일의 내용이 일부 변경 되었으므로 로컬 개발환경에서 동일한 개발 환경을 맞추기 위해 이미지를 새로 빌드하고 다시 시작해보자.

$ sail build --no-cache

$ sail up

참고

+ Recent posts