我在DigitalOcean上有一个后端,当连接到它时,我得到一个502
- Ngnix错误:
2023/12/01 10:05:43 [error] 31#31: *507 upstream timed out (110: Connection timed out) while connecting to upstream, client: 141.101.98.150, server: mydomaine.com, request: "GET / HTTP/1.1", upstream: "http://172.27.0.7:5001/", host: "mydomaine.com"
字符串
- 开发容器的Nginx配置:
server {
listen 80;
listen [::]:80;
server_name mydomaine.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name mydomaine.com;
access_log /var/log/nginx/dev_access.log;
error_log /var/log/nginx/dev_error.log;
location / {
proxy_pass http://dev:5001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
型
- Docker编写文件:
version: "3.7"
services:
webserver:
image: nginx:1.22.0
container_name: webserver
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./logs/nginx/:/var/log/nginx/
- ./nginx/ssl/:/etc/nginx/ssl/:ro
- ./nginx/configs/:/etc/nginx/sites-enabled/:ro
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
networks:
- backend
db_prod:
image: postgres:15
container_name: db_prod
restart: always
ports:
- "${POSTGRES_PROD_PORT}:5432"
volumes:
- db_prod:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_ENGINE: ${POSTGRES_ENGINE}
# profiles: #TODO: fix Unsupported config option for services.{service_name}: 'profiles'
# - prod
networks:
- backend
db_dev:
image: postgres:15
container_name: db_dev
restart: always
ports:
- "${POSTGRES_DEV_PORT}:5433"
volumes:
- db:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_ENGINE: ${POSTGRES_ENGINE}
# profiles:
# - dev
networks:
- backend
prod:
build: ./src
command: ["./start.sh"]
container_name: prod
restart: always
ports:
- 5002:6000
volumes:
- env_prod:/env:delegated
- .env:/app/.env:ro
- ./logs/prod/gunicorn/:/var/log/gunicorn/
depends_on:
- db_prod
environment:
LOG_PATH: /var/log
POSTGRES_HOST: db_prod
POSTGRES_ENGINE: ${POSTGRES_ENGINE}
# profiles:
# - prod
networks:
- backend
dev:
build: ./src
command: ["./start.sh"]
container_name: dev
restart: always
ports:
- 5001:6000
volumes:
- env_dev:/env:delegated
- .env:/app/.env:ro
- ./logs/dev/gunicorn/:/var/log/gunicorn/
depends_on:
- db_dev
environment:
LOG_PATH: /var/log
POSTGRES_HOST: db_dev
POSTGRES_ENGINE: ${POSTGRES_ENGINE}
# profiles:
# - dev
networks:
- backend
adminer:
image: dockette/adminer:pgsql
container_name: adminer
restart: always
environment:
UPLOAD: ${ADM_UPLOAD}
# profiles:
# - dev
# - prod
networks:
- backend
volumes:
db:
db_prod:
db_dev:
env_dev:
env_prod:
networks:
backend:
型
- Dockerfile:
FROM python:3.10.4-alpine
RUN mkdir -p $LOG_PATH/gunicorn
RUN apk add tk
WORKDIR /app
RUN set -ex \
&& apk add --no-cache --virtual \
.build-deps \
freetype-dev \
postgresql-dev \
build-base \
libffi-dev \
&& python -m venv /env \
&& /env/bin/pip install --upgrade pip
RUN ln -s /usr/include/freetype2/ft2build.h /usr/include/ft2build.h \
&& ln -s /usr/include/freetype2/freetype/ /usr/include/freetype
ADD ./requirements.txt /opt/requirements.txt
RUN /env/bin/pip install --no-cache-dir -r /opt/requirements.txt
RUN runDeps="$(scanelf --needed --nobanner --recursive /env \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| sort -u \
| xargs -r apk info --installed \
| sort -u)" \
&& apk add --virtual rundeps $runDeps \
&& apk del .build-deps
ADD ./api /app
COPY ./start.sh /app
EXPOSE 6000
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
CMD ["/app/start.sh"]
型
- start.sh
#!/bin/sh
python3 manage.py makemigrations
python3 manage.py migrate
/env/bin/gunicorn --bind :6000 config.wsgi:application --workers 3 --access-logfile $LOG_PATH/gunicorn/access.log --error-logfile $LOG_PATH/gunicorn/error.log --capture-output --enable-stdio-inheritance --log-level debug
型
1条答案
按热度按时间h9a6wy2h1#
在@大卫迷宫的一个非常有用的评论表单之后,a删除了dev和prod服务中的端口,并为每个服务创建了一个单独的
Dockerfile
和start.sh
。编写文件:
字符串
DockerFile for dev:
型
start.sh for dev:
型
Nginx config for dev:
型