[TIL_Carrotww] 76 - 22/12/20

μœ ν˜•μ„Β·2022λ…„ 12μ›” 23일
0

TIL

λͺ©λ‘ 보기
90/138
post-thumbnail

πŸ“Carrotww의 μ½”λ”© 기둝μž₯

🧲 channels docker 배포기

πŸ”
twisted-iocpsupport λŠ” 둜컬 window ν™˜κ²½μ—μ„œ ν…ŒμŠ€νŠΈ ν•˜λ©° 받아진 κ²ƒμœΌλ‘œ

  • twisted-iocp support
    Windows "I/O completion Ports" API에 바인딩을 μ œκ³΅ν•˜λŠ” νŒ¨ν‚€μ§€ 이닀.
    ν•˜μ—¬ μš°λΆ„νˆ¬ ν™˜κ²½μ—μ„œ 배포기 requirements νŒŒμΌμ— μžˆλŠ” λͺ©λ‘μ„ pip ν•˜λŠ” 와쀑 μ—λŸ¬κ°€ λ°œμƒν•˜μ˜€λ‹€.

window μ „μš© νŒ¨ν‚€μ§€ μ΄λ―€λ‘œ λ¦¬λˆ…μŠ€ ν™˜κ²½μ—μ„œ λ°°ν¬ν• λ•ŒλŠ” ν•΄λ‹Ή iocpsupportλ₯Ό μ§€μ›Œμ€€ ν›„ 배포λ₯Ό μ§„ν–‰ν•˜λ©΄ λœλ‹€.

🧲 Redis

πŸ” django channelsλ₯Ό λ°°ν¬ν•˜λ©° κ°€μž₯ μ• λ¨Ήμ—ˆλ˜ 뢀뢄인데 docker에 μ΅μˆ™ν•˜μ§€ μ•Šμ•„ redis μ»¨ν…Œμ΄λ„ˆλ₯Ό λ”°λ‘œ λ§Œλ“€μ–΄μ£ΌλŠ”λ° μ• λ¨Ήμ—ˆμœΌλ©° λ˜ν•œ μ»¨ν…Œμ΄λ‹ˆ μ‹€ν–‰μ‹œλ§ˆλ‹€ ipμ£Όμ†Œκ°€ λ°”λ€Œμ–΄
django settings.py νŒŒμΌμ— channel layer config 뢀뢄에 ipλ₯Ό ν• λ‹Ήν•΄ μ£ΌλŠ” λΆ€λΆ„μ—μ„œ 쑰금 μ‹œκ°„μ΄ λ“€μ–΄κ°”λ‹€.
μ§€κΈˆμ€ static 으둜 ipλ₯Ό λ„£μ–΄μ£Όμ–΄ λ°”κΏ€ ν•„μš”κ°€ μ—†μ–΄μ‘Œλ‹€.

  • django settings
CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("192.168.16.3", 6379)],
        },
    },
}
  • docker compose
  redis:
    image: redis
    ports:
      - "6379:6379"
    networks:
      carrot:
        ipv4_address: 192.168.16.3

  backend:
    container_name: backend
    build: ./backend/
    command: sh -c "python manage.py collectstatic --no-input && python manage.py migrate && uvicorn Togeduck.asgi:application --host 0.0.0.0 --port 8000 --reload --ws websockets"
    volumes:
      - ./backend/django/:/app/
      - /etc/localtime:/etc/localtime:ro
      - django_media:/app/media/ # nginxμ—μ„œ mediaλ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ volume을 μ§€μ •ν•΄μ€λ‹ˆλ‹€.
      - django_static:/app/static/ # nginxμ—μ„œ static을 μ‚¬μš©ν•  수 μžˆλ„λ‘ volume을 μ§€μ •ν•΄μ€λ‹ˆλ‹€.
    environment: # djangoμ—μ„œ μ‚¬μš©ν•  섀정듀을 μ§€μ •ν•΄μ€λ‹ˆλ‹€.
      - DEBUG=1
      - POSTGRES_DB=django
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=P@ssw0rd
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
    depends_on:
      - postgres
      - redis
    links:
      - redis
    restart: always
    hostname: backend
    ports:
      - 8000:8000
    networks:
      carrot:
        ipv4_address: 192.168.16.4

networks:
  carrot:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 192.168.16.0/16

uvicorn은 단일 ν”„λ‘œμ„ΈμŠ€λ‘œ asgi μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜μ§€λ§Œ κ²°κ΅­ 단일 ν”„λ‘œμ„ΈμŠ€λΌ ν•œκ³„κ°€ μžˆμ–΄ μ²˜λ¦¬λŸ‰μ„ 늘리렀면 λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ₯Ό ν™œμš©ν•΄μ•Ό ν•œλ‹€.

일단은 aws μ„œλ²„κ°€ cpu μ½”μ–΄κ°€ ν•œκ°œμ—¬μ„œ uvicorn을 μ‚¬μš©ν–ˆμ§€λ§Œ μΆ” ν›„ aws ν¬λž˜λ”§μ΄ μ„±κ³΅ν•œλ‹€λ©΄... daphne둜 λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ₯Ό ν™œμš©ν•˜μ—¬ asgi μ²˜λ¦¬κ°€ κ°€λŠ₯ν•œ μ„œλ²„λ₯Ό ꡬ좕해보렀고 ν•œλ‹€.

profile
Carrot_hyeong

0개의 λŒ“κΈ€