Skip to content
redgoose edited this page Apr 8, 2020 · 1 revision

docker를 이용하여 goose-api 환경을 만드는 법에 대하여 소개합니다.

database container

database를 사용하기 위하여 docker를 통하여 mariadb를 띄어서 사용할 수 있습니다.

먼저 다음 명령어로 이미지를 가져옵니다.

docker pull mariadb:latest

다음으로 mariadb를 데몬으로 띄우기 위하여 컨테이너를 만듭니다. 환경값으로 mysql root password, database, user, password 같은 정보를 수정해서 실행합니다.

docker run --name goose-api-db \
  -e MYSQL_ROOT_PASSWORD=1234 \
  -e MYSQL_DATABASE=goose \
  -e MYSQL_USER=goose \
  -e MYSQL_PASSWORD=1234 \
  -p 3306:3306 \
  -v `pwd`/data/db:/var/lib/mysql/ \
  -d mariadb

이것으로 localhost:3306으로 mysql을 사용할 수 있습니다.
만약 컨테이너 속으로 들어가서 직접 확인해보고 싶으면 다음 명령어를 실행하면 됩니다.

docker exec -it goose-api-db /bin/bash
mysql -ugoose goose -p
Enter password: 1234

goose-api container

먼저 이 과정을 진행하기전에 저장소를 클론 받습니다.

git clone https://github.com/redgoose-dev/goose-api.git
cd goose-api

이 저장소에 있는 내용과 php, composer가 들어있는 환경을 만들기 위하여 다음 명령어로 이미지를 제작합니다.

docker build -t goose-api .

이미지 빌드 명령어대로 이미지가 만들어졌으면 이미지의 이름은 goose-api 일것입니다.

컨테이너 만들기전에 .env파일이 꼭 필요하므로 다음 명령어를 한번 실행해줍니다. (goose-api 클론받은 장소라면 사용 가능합니다.)

./script.sh ready

다음으로 php-fpmphp서버를 띄우기 위하여 다음 명령어로 컨테이너를 만듭니다.

docker run --name goose-api \
  -v `pwd`/.env:/goose/.env \
  -v `pwd`/data/:/goose/data/ \
  -p 8000:80 \
  --link goose-api-db:mysql \
  -d goose-api

마지막으로 다음 명령을 실행하여 goose-api를 인스톨합니다.

docker exec goose-api ./script.sh install

Success install! 이라는 메시지를 볼 수 있다면 성공적으로 인스톨 되었다고 볼 수 있습니다.

이제 브라우저에서 http://localhost:8000 주소로 접속하면 다음과 같은 메시지가 출력된다면 정상적으로 작동되는것을 볼 수 있습니다.

{
  "code": 200,
  "message": "hello goose api",
  "success": true,
  "url": "http:\/\/localhost:8000\/",
  "time": "5.933ms"
}

그리고 http://localhost:8000/apps로 접속할때 다음과 같은 메시지로 출력된다면 db도 잘 작동된다고 볼 수 있습니다.

{
    "code": 401,
    "message": "Authorization error : Not found `Authorization` in header",
    "success": false,
    "url": "http:\/\/localhost:8000\/apps",
    "time": "5.623ms"
}

goose-api 저장소를 클론받은 장소가 아닌곳에서 설치하는 경우..

이전 섹션의 예제는 goose-api 저장소를 클론받은 장소에서 진행하는 예제였습니다. 하지만 다른 장소에서 사용하려면 별도로 준비를 해줘야하는것들이 있습니다.

이미지 pull 받기

docker pull redgoose/goose-api

필요한 디렉토리와 파일들 만들기

다음과 같은 형태로 파일과 디렉토리를 만드세요.

다음 스크립트를 명령을 실행하여 쉽게 디렉토리와 설정파일들을 만들 수 있습니다.

curl -O https://raw.githubusercontent.com/redgoose-dev/goose-api/master/script.sh
chmod 755 script.sh
./script.sh init-docker
rm script.sh

container 만들기

다음 명령을 실행하여 컨테이너를 만드세요.

docker run --name goose-api \
  -v `pwd`/data/.env:/goose/.env \
  -v `pwd`/data/upload:/goose/data/upload \
  -p 8000:80 \
  --link goose-api-db:mysql \
  -d redgoose/goose-api

컨테이너가 띄어졌으면 다음 명령어로 goose-api를 인스톨 합니다.

docker exec goose-api ./script.sh install

배포하기

redgoose/goose-api와 같은 경로는 자유롭게 변경하세요.

docker build -t redgoose/goose-api .
docker push redgoose/goose-api

Clone this wiki locally