Trong Docker Tôi muốn làm điều này:Docker: thay đổi thư mục lệnh
git clone XYZ
cd XYZ
make XYZ
Tuy nhiên vì không có lệnh cd, tôi phải vượt qua trong đường dẫn đầy đủ mọi (chắc XYZ/fullpath). Bất kỳ giải pháp tốt cho điều này?
Trong Docker Tôi muốn làm điều này:Docker: thay đổi thư mục lệnh
git clone XYZ
cd XYZ
make XYZ
Tuy nhiên vì không có lệnh cd, tôi phải vượt qua trong đường dẫn đầy đủ mọi (chắc XYZ/fullpath). Bất kỳ giải pháp tốt cho điều này?
Bạn có thể chạy tập lệnh hoặc tham số phức tạp hơn đối với RUN. Dưới đây là một ví dụ từ một Dockerfile Tôi đã tải xuống để nhìn vào trước đó:
RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \
rm -f treeio.zip && cd treeio && pip install -r requirements.pip
Bởi vì việc sử dụng '& &', nó sẽ chỉ nhận được đến trận chung kết 'pips cài đặt' lệnh nếu tất cả các lệnh trước Đã thành công. Trong thực tế, vì mỗi RUN tạo ra một cam kết mới & (hiện tại) là một lớp AUFS, nếu bạn có quá nhiều lệnh trong Dockerfile, bạn sẽ sử dụng hết các giới hạn, vì vậy hãy hợp nhất các RUN (khi tệp được ổn định) có thể là một điều rất hữu ích để làm.
Trong trường hợp bạn tự hỏi, hiệu ứng của 'cd' chỉ kéo dài cho lệnh' RUN' hiện tại. 'RUN' tiếp theo sẽ bắt đầu từ' WORKDIR' hiện tại. – Ritchie
Để chuyển sang sử dụng thư mục khác WORKDIR. Tất cả các lệnh RUN, CMD và ENTRYPOINT sau khi WORKDIR sẽ được thực hiện từ thư mục đó.
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
Sử dụng WORKDIR cũng được trích dẫn là một thực hành tốt nhất [dockerfile] (https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#workdir) –
Tôi tin rằng đây là câu trả lời phù hợp hơn cho câu hỏi – purpletentacle
RUN git clone http://username:[email protected]/example.git
WORKDIR /folder
RUN make
liên quan: http://stackoverflow.com/questions/17891669/docker-command-fails-during-build-but-succeeds-while-executed-within-running-co – trcarden
lệnh workdir là được ghi nhận là giải pháp có thể có cũng như – trcarden
Không phải giải pháp thay thế, đó là giải pháp được đề xuất https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#workdir –