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
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