명령 하나로 도커 파일 빌드 및 실행
도커 파일에서 이미지를 빌드하고 단일 명령으로 실행할 수 있습니까?
명령이 하나 있습니다.docker build
Docker 파일을 빌드하고docker run -it
이미지를 실행합니다.
이 두 명령을 조합하여 하나의 명령으로 쉽게 빌드하고 실행할 수 있습니까?
태깅을 피하고 싶다면,docker build -q
최종 이미지 해시만 출력합니다. 이 해시를 인수로 사용할 수 있습니다.docker run
:
docker run -it $(docker build -q .)
추가--rm
로.docker run
용기가 나갈 때 자동으로 제거되도록 하려면 이 옵션을 선택합니다.
docker run --rm -it $(docker build -q .)
아니요, 단일 명령은 없습니다.그러나 이미지를 만들 때 태그를 지정하면 실행하기가 더 쉬워집니다.
docker build -t foo . && docker run -it foo
구축 중인 대부분의 앱이 조만간 외부 서비스와 통신하기 때문에 이러한 편의를 위해 도커 컴포지를 사용합니다. 어쨌든 사용할 예정이라면 처음부터 사용해 보는 것이 어떻습니까?docker-compose.yml을 다음과 같이 지정합니다.
version: "3"
services:
app:
build: .
그런 다음 다음으로 앱을 실행합니다.
docker-compose up --build app
이미지 정의가 변경되었는지 여부에 따라 이미지를 재구성하거나 컨테이너를 재사용합니다.
Makefile을 사용하면 이 스니펫이 유용합니다.
build:
@docker build . | tee .buildlog
bash: build
@docker run --rm -it $(shell grep "Successfully built" .buildlog | cut -d ' ' -f 3) /bin/bash
@jonathon-rainhart 답변처럼 태그를 지정할 필요는 없지만 빌드 출력도 얻을 수 있습니다.
최근에 사용에 대한 프로모션 메시지를 받기 시작했습니다.docker scan
체격이 크고 난 후에
'도커 스캔'을 사용하여 이미지에 대해 Snyk 테스트를 실행하여 취약성을 찾고 이를 해결하는 방법을 배웁니다.
제가 예전에 했던 일은 다음과 같습니다.
docker build --quiet .
그리고 지금 작동하는 것은 다음과 같습니다.
docker build --quiet . | head -n1
또한 할 수 있습니다.docker build
및 파이프 이미지 이름을 출력합니다.docker run
:
docker build . | tail -n1 | cut -d' ' -f3 | xargs -I{} docker run {}
docker build
다중 줄 텍스트를 제공합니다.... Successfully built 18e77bc0d83a
- 당신은 마지막 대사를 얻습니다.
tail -n1
- 로 나누어진.
' '
그리고 구함3
와의 말다툼.cut -d' ' -f3
- 그것을 의론으로 보다
run
와 함께xargs -I{} docker run {}
재사용 가능한 솔루션을 찾는 사람이라면 누구나 https://github.com/stasmihailov/docker-script 에서 만든 도커 플러그인을 설치할 수 있습니다.
그런 다음 다음 Docker 파일을 만들고 실행할 수 있습니다.
docker script ./Dockerfile
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
}
윈도 PC
만들기run.bat
그런 다음 파일에 다음을 추가합니다.
docker build -t foo .
docker run -it foo
powershell 또는 cmd를 사용하여 파일을 실행하려면 다음을 수행합니다.
./run.bat
생성된 이미지에 자동으로 이름을 지정합니다.
alias docker-up=docker build -t $(basename $PWD) . && docker run -it $(basename $PWD)
언급URL : https://stackoverflow.com/questions/45141402/build-and-run-dockerfile-with-one-command
'programing' 카테고리의 다른 글
LINQ를 SQL에 사용하면 SQL 주입을 방지할 수 있습니다. (0) | 2023.08.04 |
---|---|
getJ 사용 방법SON, 포스트 메소드로 데이터를 전송하시겠습니까? (0) | 2023.08.04 |
도커 네트워킹 사용 안 함: 경고: IPv4 전달 사용 안 함.네트워킹이 작동하지 않음 (0) | 2023.08.04 |
'엔트리' 키워드는 어떻게 되었습니까? (0) | 2023.08.04 |
IntelliJ에서 스프링 활성 프로파일 환경 변수를 설정하는 방법 (0) | 2023.08.04 |