2015-09-25 18 views
6

Tôi muốn biết không phản ứng hướng dẫn ENTRYPOINT từ Dockerfiles khi di sản sẽ xảy ra:như thế nào EntryPoint Docker chỉ phản ứng khi mở rộng hình ảnh

Hãy nói ví dụ tôi có một hình ảnh gọi: jenkins

FROM java:8-jdk 
RUN ... 
ENTRYPOINT ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"] 

Bằng cách chạy hình ảnh này, chỉ thị ENTRYPOINT sẽ bắt đầu và cài đặt ứng dụng như mong đợi

Bây giờ hãy nói rằng tôi wan t để mở rộng hình ảnh này với một Dockerfile mới, tôi gọi nó là: Jenkins-tùy chỉnh

FROM jenkins 

# enable start tls 
RUN echo "JENKINS_JAVA_OPTIONS=\"-Dmail.smtp.starttls.enable=true\"" >> /etc/default/jenkins 
RUN chown jenkins:docker /etc/default/jenkins 

Tôi có nên xem xét rằng:

  1. các Jenkins entrypoint được kích hoạt sau khi dây chuyền mới của tôi .
  2. điểm vào sẽ được trigered trước các dòng mới của tôi.
  3. điểm nhập cảnh sẽ không được kích hoạt.

Trong ví dụ của tôi, tôi đang cố gắng kích hoạt STARTTLS trong hình ảnh Docker mặc định của Jenkins, tôi có nên khởi động lại quá trình trong hình ảnh thứ hai không?

Nhờ tất cả;)

Trả lời

4

Các lệnh trong ENTRYPOINT chạy khi bạn thực hiện docker run. Tuy nhiên, lệnh trong RUN được thực thi khi bạn chạy docker build.

Trong trường hợp của bạn, những gì sẽ xảy ra là khi bạn docker build hình ảnh, một tập tin cấu hình Jenkins mới được tạo ra, và sau đó khi bạn docker run nó, tini được đưa ra, và lần lượt thực hiện jenkins-entrypoint.sh.


Nếu những gì bạn đang cố gắng làm là thay đổi cấu hình Jenkins và không có gì khác, những gì bạn có ở đây là tốt.

+0

Tôi không thể chắc chắn đủ, cảm ơn vì đã nhắc tôi! – BigDong

+0

@BigDong Chỉ cần lưu ý rằng Docker thực sự xuất ra những gì nó làm khi bạn chạy 'docker build', vì vậy bạn sẽ thấy rằng Jenkins không ** không ** bắt đầu tại điểm đó;) –

Các vấn đề liên quan