2016-02-18 59 views
7

Tôi đang làm việc để thiết lập lưới selenium được xếp chồng lên nhau. Tôi có thể gửi thử nghiệm python của tôi [chạy với pytest] từ một thùng chứa pytest [xem bên dưới] bằng cách gắn vào nó. Nhưng tôi đã thiết lập một LAMP container đó sẽ kiểm soát pytest. Vì vậy, tôi muốn làm cho thùng chứa độc nhất, chạy không tải và chờ các lệnh từ container LAMP.Chạy py.test trong thùng chứa docker như một dịch vụ

Tôi có Dockerfile này:

# Starting from base image 
FROM ubuntu 

#----------------------------------------------------- 
# Set the Github personal token 
ENV GH_TOKEN blablabla 

# Install Python & pip 
RUN apt-get update 
RUN apt-get upgrade -y 
RUN apt-get install -y python python-pip python-dev && pip install --upgrade pip 

# Install nano for #debugging 
RUN apt-get install -y nano 

# Install xvfb 
RUN apt-get install -y xvfb 

# Install GIT 
RUN apt-get update -y && apt-get install git -y 

# [in the/folder] 
RUN git clone https://$GH_TOKEN:[email protected]/user/project.git /project 

# Install dependencies via pip 
WORKDIR /project 
RUN pip install -r dependencies.txt 
#----------------------------------------------------- 

# 
CMD ["/bin/bash"] 

tôi bắt đầu container pytest bằng tay [phát triển] với điều này:

docker run -dit -v /project --name pytest repo/user:py 

Cái này là tôi đã hoàn thành phát triển và tôi muốn có pytest vùng chứa được khởi chạy từ docker-compose và kết nối nó với các vùng chứa khác [có liên kết và khối lượng]. Tôi không thể làm cho nó ở lại.

Tôi sử dụng này:

pytest: 
    image: repo/user:py 
    volumes: 
    - "/project" 
    command: "/bin/bash tail -f /dev/null" 

nhưng didnt làm việc.

Vì vậy, bên trong Dockerfile, tôi có nên sử dụng CMD hoặc ENTRYPOINT cụ thể không?

Tôi có nên sử dụng một số command từ tệp docker-compose không?

+0

trình chạy docker của bạn có '-dit' lạ, nó là d hoặc không, cả hai, và có Dockerfile của bạn nên có CMD hoặc ENTRYPOINT – user2915097

+0

Tôi khởi chạy nó trước tiên với -dit vì vậy tôi có giao diện điều khiển miễn phí, và sau đó tôi khởi chạy với việc tạo một vùng chứa khác tùy thuộc vào lần đầu tiên đang hoạt động. Tôi biết rằng nó nên có nhưng những gì có chứa các lệnh sẽ được để giữ nó lên ?? –

+1

Điều gì @ user2915097 có nghĩa là, tôi đoán, là bạn không cần 'it', chỉ' -d' để chạy các thùng chứa như daemon (nền) quá trình. '-it' hữu ích khi tương tác chạy thùng chứa và phân bổ' tty'. – Auzias

Trả lời

1

Tôi không chắc chắn cách kiểm tra của bạn thực thi, nhưng tôi nghĩ rằng tôi có trường hợp sử dụng tương tự. Bạn có thể xem cách tôi thực hiện điều này trong số Envoy project trong số cmd.sha sample test của mình.

Đây là cách tôi chạy thử nghiệm của mình. Tôi đang sử dụng pytest là tốt, nhưng thats không quan trọng: 1. sử dụng docker-soạn để đưa lên các ngăn xếp, mà không có các bài kiểm tra 2. chờ đợi cho các stack để sẵn sàng cho các yêu cầu. đối với tôi điều này có nghĩa là cuộc thăm dò cho một phản ứng 200 3. chạy thùng chứa thử nghiệm một cách riêng biệt nhưng đảm bảo nó sử dụng cùng một mạng như ngăn xếp soạn thư.

Điều này có thể được thực hiện bằng nhiều cách. Bạn có thể đặt tất cả trong một kịch bản Bash và kiểm soát tất cả từ máy chủ của bạn.

Trong trường hợp của tôi, tôi làm điều này tất cả từ một thùng chứa Python. Một chút của nó để quấn đầu của bạn xung quanh, nhưng ý tưởng là có một container thử nghiệm Python mà máy chủ bắt đầu. Sau đó, các container chính nó sử dụng soạn để đưa lên stack trở lại trên máy chủ (dockerception). Và sau đó trong container thử nghiệm, chúng tôi chạy thử nghiệm pytest. Khi nó được thực hiện, nó soạn ra ngăn xếp và đẩy mã trả về.

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