안녕하세요
깃헙 오픈소스로 이것저것 공부하던중에 소스에 도커파일이 섞여있어서 무슨 역할을 하는지 궁금하여 질문남기게 되었습니다
일단 이 오픈소스는 갯츠비 스타터(리액트를 이용한 정적웹사이트 제작 오픈소스) 소스이구요
도커이그놀파일을 포함해서 총 5개의 도커파일이 있습니다
갯츠비 스타터라서 도커가 필요한가? 싶어서 찾아봐도 무슨역할을 하는지는 잘 모르겠습니다
일단 소스를 캡쳐했습니다
컴포즈 파일인데요 도커 파일중 가장 궁금한부분입니다
4행에 image가 있는데요
(깃허브레파지토리?)라고 쓰여진부분에 원래 이 오픈소스의 깃허브 또는 도커허브의 레파지토리로 생각되는 루트 주소가써있었습니다
예를들면 clien/gatsby-stater-clien처럼요
그래서 혹시 이주소 설정으로 도커허브에서 해당 도커허브 이미지를 내려받는 기능인가 싶어서 도커허브에가서 직접 찾아보니
도커허브에 등록되어있지않더라구요(예를들면 clien으로 검색하거나 전체를 다 검색하거나 어떻게 검색해봐도 안나오더라구요)
그래서 생각한건 만들어진 이미지를 다운로드하는게아니고
로컬에 저 이름으로 도커허브에 이미지를 만드는 기능을 하는건가? 싶은데요
혹시 제가 생각한게 맞는지요?
이소스는 프로덕션 컴포즈 소스인것 같은데 역시 여기도 이미지에 관련해서 같은 설정이있습니다(첫번째 소스는 디벨롭)
요건 프로덕션 도커파일인데요 보면 아마 자동으로 커맨드를 나열해서 지정루트 청소하고 이미지로 씌우는 느낌인데요
정확히는 모르겠습니다
(이게 갯츠비 스타터에 왜 필요한건지..ㅠㅠ)
디벨롭 도커파일도 있는데요 프로덕션에 비해선 상당히 간단하네요..(물론 의미는 모르겠습니다)
질문이 엄청 장황한데요 죄송합니다 ㅠㅠ
일단 가장궁금한건 1번째 2번째의 image:뒤에 붙은 레포지토리 주소가 무슨 역할을 하는주소인지궁금합니다
(도커이미지 생성 레포지토리인지 클론 주소인지 아니면 도커랑 상관없이 깃 레포지토리를 써놓은건지....)
두번째로 궁금한건 이 도커파일세트가 프로덕션하고 디벨롭으로 나눠져있는데 나눈이유와 각각 무슨역할을 하는지가 궁금합니다
미천한 독학코딩러에게 자비를 부탁드립니다 ㅠㅠ
"계정/이미지:버전" 형태인 경우와 "URL/이미지:버전"로 구성되는 경우가 있습니다.
"계정/이미지:버전" 인 경우에는 로컬 도커 이미지를 먼저 검색하고 없으면, 도커 허브를 통해 이미지를 가져옵니다.
"URL/이미지:버전" 로 구성된 경우에는 대상 "URL" 에 도커 레지스트리 서버가 동작하고 있다고 가정해 대상 서버에서 이미지를 가져옵니다.
원하는 도커 컨테이너를 생성하기 위해서 아래 명령을 사용합니다.
docker-compose -f docker-compose.production.yml build
컨테이너는 `docker-compose.production.yml` 파일 안에 `image` 항목으로 지정한 이름으로 생성됩니다.
version: '2'
services:
web:
image: bluewiz/gatsby-starter-lumen:production
build:
context: ./
dockerfile: Dockerfile.production
tty: true
volumes:
- ./:/usr/src/app
ports:
- "80:80"
생성한 컨테이너 이미지는 `docker images` 명령으로 확인할 수 있습니다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
bluewiz/gatsby-starter-lumen production 4959d0fa4f80 9 minutes ago 67MB
...
컨테이너를 실행하려면 `docker-compose up` 명령을 사용합니다.
$ docker-compose -f docker-compose.production.yml up
Starting gatsby-starter-lumen_web_1 ... done
Attaching to gatsby-starter-lumen_web_1
web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web_1 | 10-listen-on-ipv6-by-default.sh: error: IPv6 listen already enabled
web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up
포트 설정을 변경한 게 없다면, http://localhost:80 를 통해 접속할 수 있습니다.
gatsby-starter-lumen:development 컨테이너는 개발을 위해
내부에 들어가서 작업할 수 있게 만들어둔 것이라고 생각됩니다.
gatsby-starter-lumen:production 컨테이너는
실제로 정적 콘텐츠 관리를 할 수 있도록 서버를 띄울 목적으로 만들어져 있습니다.
친절하게 답변해주셔서 정말 감사드립니다 ㅠㅠ
정말 많은 공부가 되었습니다
이해하기 쉽게 설명해 주셔서 정말 감사드립니다 ㅠㅠ
뭐라고 감사의 말씀을 드려야 될지 모르겠네요 ㅠㅠ