DockerFile z Rabbitmq

Odpowiedz Nowy wątek
2020-01-13 23:51
0

Cześć wszystkim!
Nie mogę poradzić sobie z napisaniem Dockerfile. Case brzmi tak: Muszę postawić dwa kontenery python, które skomunikuję za pomocą RabbitMQ.
Mam parę pytań:

  1. W pierwszej linii FROM, powinienem się odwołać do obrazu pythona czy samego rabbita?
  2. Jak poprawnie umieścić Rabbita w moim obrazie?

Podrzucam "kod", którym starałem się to zrobić, domyślam się, że cały jest do przerobienia.

FROM python:3

COPY emit_log.py .
CMD ["docker", "pull", "rabbitmq"]
CMD  ["docker", "run", "-it", "--rm", "--name", "rabbitmq", "-p", "5672:5672", "-p", "15672:15672", "rabbitmq:3-management"]
CMD ["python3", "emit_log.py"]

Z góry dzięki za wszystkie odpowiedzi!

A może po prostu postaw dwa kontenery z Pythonem i jeden z Rabbitem? - Spearhead 2020-01-14 03:10

Pozostało 580 znaków

2020-01-14 07:35
2

Docker powstał w myśl 1 kontener = 1 aplikacja - w Twojej sytuacji mógłbyś np. stworzyć docker-compose.yml z konfiguracją trzech osobnych kontenerów.


edytowany 1x, ostatnio: Patryk27, 2020-01-14 10:00

Pozostało 580 znaków

2020-01-14 10:13
0

Zasadniczo jak napisał przedmówca:

  • zrób sobie kontener rabbita, na którym stoi serwer i który ma otwarty port dla rabbita
  • zrób sobie kontenery pythona, które mają tą samą sieć i otwarte porty do rabbita
  • docker-compose to przyjemna nakładka na dockera, bo zarządzasz całym tym swoim inwentarzem przy pomocy jednego pliku yml zamiast odpalać docker run w 15 liniach...

Pozostało 580 znaków

2020-01-14 23:19
1

Coś takiego, raczej nie zadziała ci od strzała, bo pisałem z palca, ale możesz się wzorować.

version: '3.4'
services:
  emiter:
    image: python:3.8-alpine3.11
    command: python costam.py
    depends_on:
      - broker

  receiver:
    image: python:3.8-alpine3.11
    command: python costam.py
    depends_on:
      - emiter
      - broker

  broker:
    image: rabbitmq:3.7-alpine
    ports:
      - "5672:5672"
    environment:
      - RABBITMQ_DEFAULT_VHOST=yourvhostktoregouzyjeszdopolaczeniazrabbitem

domyślne wjazdy do rabbita masz w dokumentacji na docker hubie

Pewnie możesz chcieć podmontować sobie swój folder z kodem, więc do composa dorzucamy ( do emitera i receivera)

    volumes:
      - .:/app/

ta sama wysokość wcięcia co image czy command

Pozostało 580 znaków

2020-01-16 10:52
1

@grski: Dodałbym jeszcze małą uwagę odnośnie depends_on, który zapewnia tylko że dany obraz (serwis) wstał ale nie koniecznie musi być już gotowy do pracy: https://docs.docker.com/compose/startup-order/

Dlatego warto zainteresować się jeszcze: https://github.com/vishnubob/wait-for-it

Prawda, +1 - grski 2020-01-16 14:35

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0