Tôi đã thử sau một số hướng dẫn và tài liệu về dockerizing máy chủ web của tôi, nhưng tôi đang gặp khó khăn nhận được dịch vụ để chạy qua lệnh Docker chạy.Dockerized nginx không được bắt đầu
Đây là Dockerfile tôi:
FROM ubuntu:trusty
#Update and install stuff
RUN apt-get update
RUN apt-get install -y python-software-properties aptitude screen htop nano nmap nginx
#Add files
ADD src/main/resources/ /usr/share/nginx/html
EXPOSE 80
CMD service nginx start
tôi có thể tạo hình ảnh của tôi:
docker build -t myImage .
Và khi tôi chạy nó:
docker run -p 81:80 myImage
nó dường như chỉ dừng lại:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90e54a254efa pms-gui:latest /bin/sh -c service n 3 seconds ago Exit 0 prickly_bohr
Tôi mong đợi điều này sẽ được chạy với cổng 81-> 80 nhưng nó không phải là. Chạy
docker start 90e
dường như không làm gì cả.
Tôi cũng đã cố gắng vào nó trực tiếp
docker run -t -i -p 81:80 myImage /bin/bash
và từ đây tôi có thể bắt đầu dịch vụ
service nginx start
và từ tab khác tôi có thể nhìn thấy nó đang làm việc như dự định (cũng trong trình duyệt của tôi) :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
408237a5e10b myImage:latest /bin/bash 12 seconds ago Up 11 seconds 0.0.0.0:81->80/tcp mad_turing
Vì vậy, tôi cho rằng đó là điều tôi đang làm sai với Dockerfile của mình? Bất cứ ai có thể giúp tôi với điều này, tôi khá mới để Docker. Cảm ơn bạn!
GIẢI PHÁP: Dựa trên câu trả lời từ Ivant, tôi tìm thấy một cách khác để bắt đầu nginx ở nền trước. Dockerfile CMD của tôi bây giờ trông giống như:
CMD /usr/sbin/nginx -g "daemon off;"
Cảm ơn bạn, điều này là khá rõ ràng khi bạn giải thích nó :) Tôi đã tạo ra một kịch bản vòng lặp và có lẽ sẽ phát triển giải pháp đó trong thời gian. Bây giờ tôi ít nhất biết tại sao! – Solvemon
Dòng đầu tiên có thể là một phần của tài liệu. – Vor