이 이미지를 사용합니다 : dperson / samba
이미지가 자체 진입 점을 정의하고 있으며 무시하고 싶지 않습니다.
도커로 쉽게 인수를 시작점에 전달해야합니다.
docker run ... dperson/samba arg1 arg2 arg3
그러나 docker_compose.yml로 어떻게합니까?
지금은 해결 방법으로 사용합니다.
command: samba.sh arg1 arg2 arg3
그러나 진입 점의 재정의를 강요하면 만족스럽지 않습니다.
답변
이 command
절은 @Karthik이 위에서 말한 것처럼 작동합니다.
간단한 예를 들어, 다음 서비스 는 실행될 때 -inMemory
추가됩니다 .ENTRYPOINT
docker-compose up
version: '2'
services:
local-dynamo:
build: local-dynamo
image: spud/dynamo
command: -inMemory
답변
command
docker-compose.yml에 지정된 내용 entrypoint
은 Dockerfile entrypoint
에 exec 형식으로 정의되어 있으면 Dockerfile에 정의 된 항목에 추가되어야합니다 .
EntryPoint가 셸 형식으로 정의 된 경우 모든 CMD 인수는 무시됩니다.
답변
docker-compose run
대신 docker-compose up
인수를 사용 하여 인수를 지정할 수 있습니다 . 예를 들면 다음과 같습니다.
docker-compose run dperson/samba arg1 arg2 arg3
다른 도커 컨테이너에 연결 해야하는 경우 다음 --service-ports
옵션을 사용할 수 있습니다 .
docker-compose run --service-ports dperson/samba arg1 arg2 arg3
답변
기본 진입 점을 무시하려면 entrypoint
option을 사용하십시오 . 인수를 전달하려면을 사용하십시오 command
.
여기서 치환의 예이다 bash
으로 sh
의 ubuntu
이미지 :
version: '3'
services:
sh:
entrypoint: /bin/sh
command: -c "ps $$(echo $$$$)"
image: ubuntu
tty: true
bash:
entrypoint: /bin/bash
command: -c "ps $$(echo $$$$)"
image: ubuntu
tty: true
출력은 다음과 같습니다.
$ docker-compose up
Starting test_sh_1 ... done
Starting 020211508a29_test_bash_1 ... done
Attaching to test_sh_1, 020211508a29_test_bash_1
sh_1 | PID TTY STAT TIME COMMAND
sh_1 | 1 pts/0 Ss+ 0:00 /bin/sh -c ps $(echo $$)
020211508a29_test_bash_1 | PID TTY STAT TIME COMMAND
020211508a29_test_bash_1 | 1 pts/0 Rs+ 0:00 ps 1
답변
jenkins ssh slave ‘ jenkinsci / ssh-slave ‘ 와 동일한 문제에 직면했습니다 . 그러나 공백이 포함 된 인수를 전달해야했기 때문에 내 경우는 약간 복잡했습니다. 아래처럼 처리했습니다 (dockerfile의 입력 포인트는 exec 형식입니다).
command: ["some argument with space which should be treated as one"]