반응형
하나의 명령으로 Dockerfile 빌드 및 실행
Dockerfile을 빌드하고 명령 을 실행 docker build
하는 하나의 명령이 있으므로 하나의 명령만으로 Dockerfile을 빌드하고 실행할 수 있습니까?docker run -it
하나의 명령으로 쉽게 빌드하고 실행할 수 있도록이 두 명령의 조합이 있습니까?
아니요, 단일 명령이 없습니다. 그러나 이미지를 빌드 할 때 태그를 지정하면 실행하기가 더 쉽습니다.
docker build -t foo . && docker run -it foo
태그 지정을 피 docker build -q
하려면 최종 이미지 해시 만 출력 합니다.이 해시 를 docker run
다음에 대한 인수로 사용할 수 있습니다 .
docker run -it $(docker build -q .)
컨테이너가 종료 될 때 자동으로 제거 --rm
되도록 docker run
하려면에 추가하십시오 .
docker run --rm -it $(docker build -q .)
Makefile을 사용하는 경우이 스 니펫이 유용합니다.
build:
@docker build . | tee .buildlog
bash: build
@docker run --rm -it $(shell grep "Successfully built" .buildlog | cut -d ' ' -f 3) /bin/bash
@ jonathon-reinhart 답변과 같이 태그가 필요하지 않지만 빌드 출력도 얻습니다.
Windows PC
run.bat
파일을 만드십시오 . 그런 다음 파일에 다음을 추가하십시오.
docker build -t foo .
docker run -it foo
powershell 또는 cmd를 사용하여 파일을 실행하려면 다음을 수행하십시오.
./run.bat
docker-build-and-run
단일 명령으로 빌드 및 실행을위한 작은 도우미 명령을 만들었습니다. Linux 또는 Mac에서는이를 ~/.bash_profile
터미널에 추가 하여 사용할 수 있습니다.
용법:
docker-build-and-run BUILD_ARGS [-- RUN_ARGS] [-- RUN_COMMAND]
예 :
docker-build-and-run . -- npm run test
docker-build-and-run --file ./Dockerfile . -- -v ~/volume:/var/volume -- node server.js
스크립트 :
이것을 .sh
파일에 추가하거나에 추가하십시오 ~/.bash_profile
.
TERM_GREEN="\033[1;32m"
TERM_BLUE="\033[1;34m"
TERM_NC="\033[0m"
docker-build-and-run() {
if [[ -z "$@" ]]; then
echo "
Usage:
docker-build-and-run BUILD_ARGS [-- RUN_ARGS] [-- RUN_COMMAND]
Examples:
docker-build-and-run . -- npm run test
docker-build-and-run --file ./Dockerfile . -- -v ~/volume:/var/volume -- node server.js
"
return
fi
# Extract the segments between the dashes:
BEFORE_THE_DASHES=
while (( "$#" )); do
if [[ "$1" = "--" ]]; then
shift
break
fi
BEFORE_THE_DASHES="$BEFORE_THE_DASHES $1"
shift
done
SEGMENT_1=$BEFORE_THE_DASHES
BEFORE_THE_DASHES=
while (( "$#" )); do
if [[ "$1" = "--" ]]; then
shift
break
fi
BEFORE_THE_DASHES="$BEFORE_THE_DASHES $1"
shift
done
SEGMENT_2=$BEFORE_THE_DASHES
SEGMENT_3=$@
BUILD_ARGS=$SEGMENT_1
RUN_ARGS=$SEGMENT_2
RUN_COMMAND=$SEGMENT_3
if [ -z "$RUN_COMMAND" ]; then
RUN_COMMAND=$RUN_ARGS
RUN_ARGS=
fi
TEMP_TAG=docker-build-and-run-temp
docker rm -f $TEMP_TAG 2>/dev/null
printf "${TERM_GREEN}Building Docker container (${TERM_BLUE}docker build $BUILD_ARGS${TERM_GREEN})${TERM_NC}\n" \
&& docker build --tag $TEMP_TAG $BUILD_ARGS \
&& printf "${TERM_GREEN}Running Docker container (${TERM_BLUE}docker run $RUN_ARGS $RUN_COMMAND${TERM_GREEN})${TERM_NC}\n" \
&& docker run --rm -it $RUN_ARGS --label $TEMP_TAG $TEMP_TAG $RUN_COMMAND
}
참고 URL : https://stackoverflow.com/questions/45141402/build-and-run-dockerfile-with-one-command
반응형
'Development Tip' 카테고리의 다른 글
GitHub Wiki (gollum) 저장소에 이미지를 삽입 하시겠습니까? (0) | 2020.10.08 |
---|---|
Firebug가 toFixed ()가 함수가 아니라고 말하는 이유는 무엇입니까? (0) | 2020.10.08 |
짧은 IF-ELSE 문 (0) | 2020.10.08 |
JSON을 ArrayList로 역 직렬화 (0) | 2020.10.08 |
Slack 팀 ID와 채널 ID를 찾는 가장 간단한 방법은 무엇입니까? (0) | 2020.10.08 |