taskfile.dev에서 docker-compose와 같은 인수가 너무 많아 문제를 한꺼번에 간단하게 만듭니다.
9487 단어 docker-composetask-runner도커
TLDR
task dev
라든지 task bash
라고 하는 느낌으로 호출 task cp_from --- target.file
같은 느낌으로 인수도 건네줄 수 있다 docker-compose -f...
를 task dev
소개
여러분 오늘도 docker를 사용하고 있습니까?
인수가 너무 많아 손가락이 붙지 않습니까?
나는 이 건이 계속 신경이 쓰이고 있어, 어떻게 하면 해결할 수 있을까를 기억하고는 여러가지 조사하고 있었습니다.
php라면 composer.json에 쓰는가?
js라면 package.json에 쓰는가?
아니면 grunt 또는 gulp??
아니, 그건 아니야.
docker에 관련된 조작을 정리하고 싶으니까 다르네요.
어떤 PaaS의 서포트씨는, Makefile라든지에 쓰면, 라든지 제안해 주었습니다만, 의존관계도 없고, 이제 한층 Makefile인가라고 생각해 이 건 잠시 선반 올리고 있었습니다. 그렇게 하면 어제 문득 찾아낸 이 프로젝트.
그 외 sk피. 에서 v
그 외 sk피. 에서 v
설치
Mac이라면 Homebrew로 설치 가능합니다.
brew install go-task/tap/go-task
그 외 각 패키지 매니저(Snap, Scoop, Aur)에도 대응.
작업 정의 및 호출
# Taskfile.yml
version: '3'
hello:
cmds:
- echo 'hello world'
여기서 hello
가 작업 이름입니다. cmds에서 런타임에 호출되는 명령을 정의합니다.
명령줄에서 task タスク名
로 작업을 호출합니다.
❯ task hello
task: [hello] echo 'hello world'
hello world
변수, 환경 변수, 인수, .env 등
자세한 내용은 Usage에 작성되었지만 , 대체로 모두가 하고 싶은 것 같은 것을 소개해 둡니다.
변수
자체적으로 변수를 정의할 수 있습니다. vars:
로 정의합니다. 앞에 쓰고 전역으로 정의하거나 각 작업 로컬 변수를 정의 할 수 있습니다. 스타일 가이드에는 대문자 뱀 케이스가 권장됩니다.
변수 참조시에는 {{ .VAR_NAME }}
라고 씁니다.
vars:
MY_NAME: 'foo'
tasks:
hello_global:
cmds:
- echo 'hello world' {{ .MY_NAME }}
hello_local:
vars:
MY_NAME: 'foobar'
cmds:
- echo 'hello world' {{ .MY_NAME }}
❯ task hello_global
task: [hello] echo 'hello world' foo
hello world foo
로컬 변수는 전역 변수를 덮어 쓰지만 특별히 경고하지 않는 것 같습니다.
❯ task hello_local
task: [hello] echo 'hello world' foobar
hello world foobar
환경 변수
환경 변수는 {{ .ENVVAR_NAME }}
로 호출할 수 있습니다.
환경 변수는 전역 vars로 덮어쓸 수 있지만,
vars:
SHELL: "sheeeeel"
tasks:
hello_env:
cmds:
- echo 'hello' {{ .SHELL }}
❯ task hello_env
task: [hello_dotenv] echo 'hello' sheeeeel
hello sheeeeel
로컬 vars에서는 덮어쓸 수 없습니다.
tasks:
hello_env:
vars:
SHELL: "sheeeeel"
cmds:
- echo 'hello' {{ .SHELL }}
❯ task hello_env
task: [hello_dotenv] echo 'hello' /bin/bash
hello /bin/bash
인수
task 명령 호출시의 인수는 {{ .CLI_ARGS }}
로 참조.
tasks:
hello_args:
cmds:
- echo 'hello' {{ .CLI_ARGS }}
호출시에는 --
를 붙여 호출 커멘드명과 구별합니다.
❯ task hello_args -- string from args
task: [hello_args] echo 'hello' string from args
hello string from args
.env
.env 파일은 dotenv
지시자로 읽기를 지정합니다.
# .env
DOTVAR='value from .env'
dotenv: ['.env']
tasks:
hello_dotenv:
cmds:
- echo 'hello' {{ .DOTVAR }}
❯ task hello_dotenv
task: [hello_dotenv] echo 'hello world' value from .env
hello value from .env
실제 사용 예
나는 복잡해지는 docker-compose의 호출을 정의하고 간략하게 해 보았습니다.
version: '3'
vars:
BASE_CMD: 'docker-compose'
DEV_COMPOSE_FILE: 'docker-compose-develop.yml'
APP_CONTAINER: 'app'
APP_CONTAINER_IMAGE: 'myproject_app_1'
tasks:
dev:
cmds:
- "{{ .BASE_CMD }} -f {{ .DEV_COMPOSE_FILE }} up"
bash:
cmds:
- "{{ .BASE_CMD }} -f {{ .DEV_COMPOSE_FILE }} exec {{ .APP_CONTAINER }} bash"
cp_from:
cmds:
- CONTAINER_ID=$(docker ps| grep {{ .APP_CONTAINER_IMAGE }} | awk '{ print $1 }'); docker cp $CONTAINER_ID:/var/www/html/{{ .CLI_ARGS}} .
cp_to:
cmds:
- CONTAINER_ID=$(docker ps| grep {{ .APP_CONTAINER_IMAGE }} | awk '{ print $1 }'); docker cp {{ .CLI_ARGS}} $CONTAINER_ID:/var/www/html/
그 외, 여러가지 사용도를 생각해 내면 또 추기해 가려고 생각합니다.
그 외 sk피. 에서 v
설치
Mac이라면 Homebrew로 설치 가능합니다.
brew install go-task/tap/go-task
그 외 각 패키지 매니저(Snap, Scoop, Aur)에도 대응.
작업 정의 및 호출
# Taskfile.yml
version: '3'
hello:
cmds:
- echo 'hello world'
여기서
hello
가 작업 이름입니다. cmds에서 런타임에 호출되는 명령을 정의합니다.명령줄에서
task タスク名
로 작업을 호출합니다.❯ task hello
task: [hello] echo 'hello world'
hello world
변수, 환경 변수, 인수, .env 등
자세한 내용은 Usage에 작성되었지만 , 대체로 모두가 하고 싶은 것 같은 것을 소개해 둡니다.
변수
자체적으로 변수를 정의할 수 있습니다.
vars:
로 정의합니다. 앞에 쓰고 전역으로 정의하거나 각 작업 로컬 변수를 정의 할 수 있습니다. 스타일 가이드에는 대문자 뱀 케이스가 권장됩니다.변수 참조시에는
{{ .VAR_NAME }}
라고 씁니다.vars:
MY_NAME: 'foo'
tasks:
hello_global:
cmds:
- echo 'hello world' {{ .MY_NAME }}
hello_local:
vars:
MY_NAME: 'foobar'
cmds:
- echo 'hello world' {{ .MY_NAME }}
❯ task hello_global
task: [hello] echo 'hello world' foo
hello world foo
로컬 변수는 전역 변수를 덮어 쓰지만 특별히 경고하지 않는 것 같습니다.
❯ task hello_local
task: [hello] echo 'hello world' foobar
hello world foobar
환경 변수
환경 변수는
{{ .ENVVAR_NAME }}
로 호출할 수 있습니다.환경 변수는 전역 vars로 덮어쓸 수 있지만,
vars:
SHELL: "sheeeeel"
tasks:
hello_env:
cmds:
- echo 'hello' {{ .SHELL }}
❯ task hello_env
task: [hello_dotenv] echo 'hello' sheeeeel
hello sheeeeel
로컬 vars에서는 덮어쓸 수 없습니다.
tasks:
hello_env:
vars:
SHELL: "sheeeeel"
cmds:
- echo 'hello' {{ .SHELL }}
❯ task hello_env
task: [hello_dotenv] echo 'hello' /bin/bash
hello /bin/bash
인수
task 명령 호출시의 인수는
{{ .CLI_ARGS }}
로 참조.tasks:
hello_args:
cmds:
- echo 'hello' {{ .CLI_ARGS }}
호출시에는
--
를 붙여 호출 커멘드명과 구별합니다.❯ task hello_args -- string from args
task: [hello_args] echo 'hello' string from args
hello string from args
.env
.env 파일은
dotenv
지시자로 읽기를 지정합니다.# .env
DOTVAR='value from .env'
dotenv: ['.env']
tasks:
hello_dotenv:
cmds:
- echo 'hello' {{ .DOTVAR }}
❯ task hello_dotenv
task: [hello_dotenv] echo 'hello world' value from .env
hello value from .env
실제 사용 예
나는 복잡해지는 docker-compose의 호출을 정의하고 간략하게 해 보았습니다.
version: '3'
vars:
BASE_CMD: 'docker-compose'
DEV_COMPOSE_FILE: 'docker-compose-develop.yml'
APP_CONTAINER: 'app'
APP_CONTAINER_IMAGE: 'myproject_app_1'
tasks:
dev:
cmds:
- "{{ .BASE_CMD }} -f {{ .DEV_COMPOSE_FILE }} up"
bash:
cmds:
- "{{ .BASE_CMD }} -f {{ .DEV_COMPOSE_FILE }} exec {{ .APP_CONTAINER }} bash"
cp_from:
cmds:
- CONTAINER_ID=$(docker ps| grep {{ .APP_CONTAINER_IMAGE }} | awk '{ print $1 }'); docker cp $CONTAINER_ID:/var/www/html/{{ .CLI_ARGS}} .
cp_to:
cmds:
- CONTAINER_ID=$(docker ps| grep {{ .APP_CONTAINER_IMAGE }} | awk '{ print $1 }'); docker cp {{ .CLI_ARGS}} $CONTAINER_ID:/var/www/html/
그 외, 여러가지 사용도를 생각해 내면 또 추기해 가려고 생각합니다.
Reference
이 문제에 관하여(taskfile.dev에서 docker-compose와 같은 인수가 너무 많아 문제를 한꺼번에 간단하게 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoshito-maeoka@github/items/9aa681372ab7fb8d1bf9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)