Django e uWSGI em um contêiner Docker

0

Eu estou tentando executar um projeto que usa o Django e o uWSGI em um contêiner do Docker. Mas eu sou novo no Docker e no uWSGI, então não tenho certeza de como devo fazer isso.

Primeiro eu construí o projeto com este comando:

docker build -t saleor .

Então eu corri:

docker run --env SECRET_KEY="<the key>" -p 4000:80 saleor

E é isso que eu recebo:

[uWSGI] getting INI configuration from /app/saleor/wsgi/uwsgi.ini
[uwsgi-static] added mapping for /static => /app/static
*** Starting uWSGI 2.0.15 (64bit) on [Tue Dec 19 14:02:19 2017] ***
compiled with version: 4.9.2 on 19 December 2017 09:11:22
os: Linux-4.10.0-42-generic #46~16.04.1-Ubuntu SMP Mon Dec 4 15:57:59 UTC 2017
nodename: 88adfd3f2e93
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 4
current working directory: /app
detected binary path: /usr/local/bin/uwsgi
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
your memory page size is 4096 bytes
detected max file descriptor number: 1048576
building mime-types dictionary from file /etc/mime.types...547 entry found
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address :8000 fd 3
Python version: 3.5.4 (default, Dec 12 2017, 16:43:39)  [GCC 4.9.2]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x12277b0
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 145536 bytes (142 KB) for 1 cores
*** Operational MODE: single process ***
WSGI app 0 (mountpoint='') ready in 2 seconds on interpreter 0x12277b0 pid: 1 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 1)
spawned uWSGI worker 1 (pid: 10, cores: 1)

Agora eu não sei o que devo fazer. Normalmente, com os aplicativos do Django, apenas verifico localhost:4000 no meu navegador. Mas não funciona neste caso e não recebo nada. Então, o que devo fazer?

    
por Credo 19.12.2017 / 19:32

2 respostas

1

Eu apenas entendi uma coisa. "execução do docker" inicia somente um único contêiner. Mas alguns projetos usam vários contêineres para serviços diferentes (como este) e, para eles, compor do docker deve ser usado. O problema era que o banco de dados estava em outro contêiner. Então, usando "docker-compose up" resolveu o problema.

Embora agora eu tenha outro problema, que parece precisar de uma espiada dentro do banco de dados. Alguém sabe como posso fazer login em um banco de dados dentro de um contêiner?

    
por Credo 20.12.2017 / 16:05
0

Não estou acostumado com o docker. Você sabe de onde você tira a fonte?

link

Por exemplo, aqui, posso ver no Dockerfile

EXPOSE 8000
ENV PORT 8000

E no Django o servidor também aponta para 8000 (veja docker-compose.yml )

Eu tentaria:

docker run --env SECRET_KEY="<the key>" -p 4000:8000 saleor

e escute a porta 4000

curl http://localhost:4000

A porta 5432 parece ser a porta postgres

    
por Thomas PEDOT 19.12.2017 / 21:55