我的Procfile应该怎么样?

时间:2017-07-10 19:48:49

标签: python django python-3.x docker heroku

我想在Heroku上使用Angular 4前端,Django后端和postgresql数据库在Docker上部署我的项目。此时我的文件如下所示。我收到错误:

2017-07-10T19:44:39.000000+00:00 app[api]: Build succeeded
2017-07-10T19:45:19.954230+00:00 heroku[web.1]: Starting process with command `gunicorn pri.wsgi`
2017-07-10T19:45:22.834045+00:00 app[web.1]: [2017-07-10 19:45:22 +0000] [4] [INFO] Starting gunicorn 19.7.1
2017-07-10T19:45:22.834597+00:00 app[web.1]: [2017-07-10 19:45:22 +0000] [4] [INFO] Listening at: http://0.0.0.0:53621 (4)
2017-07-10T19:45:22.834712+00:00 app[web.1]: [2017-07-10 19:45:22 +0000] [4] [INFO] Using worker: sync
2017-07-10T19:45:22.838348+00:00 app[web.1]: [2017-07-10 19:45:22 +0000] [8] [INFO] Booting worker with pid: 8
2017-07-10T19:45:22.842567+00:00 app[web.1]: [2017-07-10 19:45:22 +0000] [8] [ERROR] Exception in worker process
2017-07-10T19:45:22.842570+00:00 app[web.1]: Traceback (most recent call last):
2017-07-10T19:45:22.842571+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
2017-07-10T19:45:22.842572+00:00 app[web.1]:     worker.init_process()
2017-07-10T19:45:22.842573+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
2017-07-10T19:45:22.842574+00:00 app[web.1]:     self.load_wsgi()
2017-07-10T19:45:22.842574+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
2017-07-10T19:45:22.842575+00:00 app[web.1]:     self.wsgi = self.app.wsgi()
2017-07-10T19:45:22.842575+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2017-07-10T19:45:22.842576+00:00 app[web.1]:     self.callable = self.load()
2017-07-10T19:45:22.842576+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2017-07-10T19:45:22.842577+00:00 app[web.1]:     return self.load_wsgiapp()
2017-07-10T19:45:22.842577+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2017-07-10T19:45:22.842577+00:00 app[web.1]:     return util.import_app(self.app_uri)
2017-07-10T19:45:22.842578+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 352, in import_app
2017-07-10T19:45:22.842578+00:00 app[web.1]:     __import__(module)
2017-07-10T19:45:22.842582+00:00 app[web.1]: ModuleNotFoundError: No module named 'project'

在我看来,这是我的原因 Procfile:

web: gunicorn project.wsgi

由于this case中的文件结构。我的项目树中的情况非常相似。任何人都可以告诉我Procfile应该是什么样的?

项目树:

DockerProject
      ├── Dockerfile
      ├── Procfile
      ├── init.sql
      ├── requirements.txt
      ├── docker-compose.yml
      └── PROJECT
            ├── frontend
            └── backend
                  └── project
                        ├── prices
                        ├── manage.py
                        └── project
                              └── all project files

Frontend的Dockerfile:

# Create image based on the official Node 6 image from dockerhub
FROM node:6

# Create a directory where our app will be placed
RUN mkdir -p /usr/src/app

# Change directory so that our commands run inside this new directory
WORKDIR /usr/src/app

# Copy dependency definitions
COPY package.json /usr/src/app

# Install dependecies
RUN npm install

# Get all the code needed to run the app
COPY . /usr/src/app

# Expose the port the app runs in
EXPOSE 4200

# Serve the app
CMD ["npm", "start"]

主目录的Dockerfile:

FROM python:3.6.1
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip3 install -r requirements.txt
ADD . /code/

搬运工-compose.yml:

version: '3'

services:
  db:
    image: postgres
    environment:
      POSTGRES_USER: aso
      POSTGRES_PASSWORD: somepass
  django:
    build: .
    command: python3 MainDirectory/backend/myProject/manage.py runserver 0.0.0.0:8001
    volumes:
      - .:/code
    ports:
      - "8001:8001"
    depends_on:
      - db
  angular:
    build: MainDirectory/frontend
    ports:
      - "4200:4200"
    depends_on:
      - django

init.sql:

CREATE USER myUser;
CREATE DATABASE myProject;
GRANT ALL PRIVILEGES ON DATABASE myProject TO myUser;

1 个答案:

答案 0 :(得分:0)

尝试:

b=alpha_uncode_message
b=''.join(map(str,b))