/private-pakages

Satis Setup example (static composer repository generator)

Primary LanguageHTML

private-pakages (Satis)

Satis Run example

소스를 내려받아 실행할 수 도 있고, 도커 이미지로 실행할 수도 있다.

Run from source

  • composer create-project composer/satis 명령으로 Satis 설치
  • php satis/bin/satis ./satis.json <output-dir> 리파지터리를 빌드/생성 한다.

Satis 프로젝트 생성

php composer.phar create-project composer/satis --stability=dev --keep-vcs

Setup

아래와 같은 satis.json 구성 파일을 작성하고, 쓰기가능한 아웃풋 디렉터리를 생성한다.

{
  "name": "My Repository",
  "homepage": "http://private-packages.example.org",
  "repositories": [
    { "type": "vcs", "url": "https://github.com/gxboard/symfony" }
  ],
  "require-all": true,
  "output-dir": "public",
  "archive": {
      "directory": "dist",
      "prefix-url": "https://private-packages.cdn.example.org",
      "skip-dev": true
    }
}
  • fork 한 symfony 프로젝트를 추가하였다.

Build

패키지 저장소를 빌드/생성

php satis/bin/satis build 
php satis/bin/satis build satis.json public/

Run as Docker Container

Windows7 용으로 Docker Toolbox 설치 https://docs.docker.com/toolbox/toolbox_install_windows/

Docker QuickStart Terminal 을 실행하고, composer/satis 이미지를 가져와서 빌드명령을 실행한다.

docker pull composer/satis
docker run --rm -it -v /c/Users/Administrator/IdeaProjects/private-pakages/build:/build composer/satis
docker run --rm -it -v /c/Users/Administrator/IdeaProjects/private-pakages/build:/build composer/satis
  • rm 종료되면 자동으로 컨테이너를 삭제한다.
  • it
    • --interactive Keep STDIN open even if not attached
    • --tty Allocate a pseudo-TTY (슈도 TTY 할당)
  • v --volume Bind mount a volume
    • 절대 경로 또는 볼륨이름

/c/Users/Administrator/IdeaProjects/private-pakages/output 에 저장된다. Dockerfile 에서 /build/satis.json /build/output 에 저장되도록 구성되어 있다.

명시적으로 구성 파일과 아웃풋 디렉터리를 지정하거나 엔트리 포인트를 /bin/sh 로 변경한다.

docker run --rm -it -v /c/Users/Administrator/IdeaProjects/private-pakages:/build composer/satis /satis/bin/satis build /build/satis.json /build/public

# 엔트리포인트 지정
docker run --rm -it --entrypoint /bin/sh -v /c/Users/Administrator/IdeaProjects/private-pakages:/build composer/satis

엔트리포인트를 쉘로 변경해서 들어가보면, 볼륨이 마운트 된 것을 확인할 수 있다.

/satis # ls -l /build/
total 1845
-rwxrwxrwx    1 1000     50            2961 Aug 25 07:34 README.md
-rwxrwxrwx    1 1000     50         1882683 Aug 25 02:39 composer.phar
drwxrwxrwx    1 1000     50               0 Aug 25 06:52 public
-rwxrwxrwx    1 1000     50             364 Aug 25 07:19 satis.json

Run the image (with Composer cache from host):

docker run --rm -it -v /build:/build -v $COMPOSER_HOME:/composer composer/satis
  • 로컬에 캐시된 컴포저를 사용할 수 있다.

참고 문서