도커 컴포지션에서 빌드 인수를 정의하는 방법은 무엇입니까?
다음 도커 합성 파일을 가지고 있습니다.
version: '3'
services:
node1:
build: node1
image: node1
container_name: node1
node2:
build: node2
image: node2
container_name: node2
두 이미지를 모두 빌드하고 단일 명령으로 시작할 수 있습니다.
docker-compose up -d --build
하지만 빌드에 빌드 인수를 사용하고 싶습니다.합성 범위 밖에 있는 이미지의 원래 빌드 스크립트는 다음과 같습니다.
#!/bin/sh
docker build \
--build-arg ADMIN_USERNNAME_1=weblogic \
--build-arg ADMIN_PASSWORD_1=weblogic1 \
--build-arg ADMIN_NAME_1=admin \
--build-arg ...
--build-arg ... \
-t test/foo .
두 이미지 모두 이름은 같지만 값은 다른 빌드 인수를 사용합니다.또한 빌드 인수가 수십 개이므로, 서비스별 빌드 속성 파일을 작성하여 저장하는 것이 편리할 것입니다.도커 컴포지로 이것이 가능합니까?
인수는 도커 합성 파일에서 직접 지정할 수 있습니다.
node1:
build:
context: node1
args:
ADMIN_USERNNAME: weblogic1
ADMIN_PASSWORD: weblogic1
ADMIN_NAME: admin1
image: node1
container_name: node1
전체 예 참조: MWE
공식 문서(여기서는 기존 v3)에 모든 세부 정보가 있습니다.
다음 항목을 정의할 수 있습니다.args
당신의 빌드 명령인 도커-디버깅으로.
도커 파일 예:
FROM nginx:1.13
RUN apt-get -y update && apt-get install -y \
apache2-utils && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
ARG username
ARG password
RUN htpasswd -bc /etc/nginx/.htpasswd $username $password
도킹 스테이션에서 가져온 파일:
version: '3'
services:
node1:
build: ./dir
그./dir
에는 다음 명령을 사용하여 Docker 파일과 I 빌드가 포함되어 있습니다.
docker-compose build --build-arg username="my-user" --build-arg password="my-pass"
이미 알고 있습니다.
Step 5/5 : RUN htpasswd -bc /etc/nginx/.htpasswd $username $password
---> Running in 80735195e35d
Adding password for user my-user
---> c52c92556825
나는 나의 스택을 가져옵니다.
docker-compose up -d
이제 nginx 컨테이너 내부를 확인할 수 있으며 사용자 이름과 (암호화된) 암호는 다음과 같습니다.
docker@default:~/test$ docker exec -it test_node1_1 bash
root@208e4d75e2bd:/# cat /etc/nginx/.htpasswd
my-user:$apr1$qg4I/5RO$KMaOPvjbnKdZH37z2WYfe1
이 방법을 사용하여 통과할 수 있습니다.build args
당신에게docker-compose
겹겹이 쌓다
당신의Dockerfile
:
ARG CERTBOT_TAG=latest
FROM certbot/certbot:${CERTBOT_TAG}
당신의docker-compose.yml
파일:
version: '3.4'
services:
certbot:
build:
context: .
args:
CERTBOT_TAG: v0.40.1
또한 서비스를 구축하거나 확장할 수 있습니다.
docker-compose build certbot
Salek가 위에서 언급했듯이, 추가.context: .
도와준다.
예:
version: '3.5'
services:
app:
build:
context: .
args:
NODE_VERSION: 14.15.4
`
도커 파일
ARG ACCOUNT_ID
FROM $ACCOUNT_ID.dkr.ecr.ap-southeast-1.amazonaws.com/my-composer:latest as composer
LABEL stage=intermediate
Buildspec 또는 CLI는 다음 명령을 실행합니다.
docker-compose build --build-arg ACCOUNT_ID="23423432423" --no-cache
CLI에서 ACCOUNT_ID를 인쇄하려는 경우
ARG ACCOUNT_ID
FROM amazonlinux:latest
RUN yum -y install aws-cli
RUN echo $ACCOUNT_ID
FROM $ACCOUNT_ID.dkr.ecr.ap-southeast-1.amazonaws.com/my-composer:latest as composer
LABEL stage=intermediate
참고: ARG는 무엇보다도 중요해야 합니다.FROM
문, 그러면 글로벌 ARG로 작동할 것입니다.
언급URL : https://stackoverflow.com/questions/50734271/how-to-define-build-args-in-docker-compose
'programing' 카테고리의 다른 글
스위치의 "켜기" 색상 변경 (0) | 2023.09.04 |
---|---|
RANGE 유형이 아닌 대신 INDEX 유형을 사용하는 날짜/시간 필드의 MySQL 인덱스 (0) | 2023.09.04 |
예외를 던질 때 종료 코드를 설정하는 방법 (0) | 2023.09.04 |
django - MySQL 데이터베이스에 저장되지 않은 레코드이지만 AutoIncrement가 증가합니다. (0) | 2023.09.04 |
쿼리가 주어지면 어떤 트리거가 발생하는지 알 수 있습니까? (0) | 2023.09.04 |