1
|
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
|
if os.getenv('Env') == 'Production':
DEBUG = False
else:
DEBUG = True
|
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfile')
1.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
WHITENOISE_STATIC_PREFIX = '/static/'
MIDDLEWARE.append('whitenoise.middleware.WhiteNoiseMiddleware')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'
|
FROM python:3.7-alpine
RUN apk update
&& apk add --no-cache --virtual bash
&& apk add gcc
&& apk add musl-dev
&& apk add linux-headers
&& apk add jpeg-dev
&& apk add zlib-dev
&& apk add mariadb-dev
&& apk add libffi-dev
COPY requirements.txt /requirements.txt
RUN pip install --upgrade pip
&& pip install -r requirements.txt
&& rm /usr/bin/mysql*
RUN mkdir /code
WORKDIR /code
|
django==2.1.2
gunicorn==19.9.0
mysqlclient==1.3.13
pymysql==0.9.2
whitenoise==4.1.2
celery==4.2.1
django-celery-results==1.0.4
django-celery-beat==1.3.0
redis==2.10.6
|
FROM mysql:5.7
COPY my.cnf /etc/mysql/conf.d/my.cnf
|
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
|
version: '2'
services:
python:
build: ./docker/python
container_name: django
ports:
- 7900:7900
volumes:
- ./code:/code
command: >
bash -c "pip install -r requirements.txt
&& python manage.py migrate
&& python manage.py collectstatic --no-input
&& gunicorn news.wsgi -b 0.0.0.0:7900"
environment:
- Env=Production
depends_on:
- mysql
- redis
- rabbitmq
- celery
- mongo
networks:
- django-networks
mysql:
build: ./docker/mysql
container_name: mysql
ports:
- 3306:3306
volumes:
- ./data/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=news
networks:
- django-networks
redis:
image: redis:latest
container_name: redis
expose:
- "6379"
networks:
- django-networks
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
ports:
- "5673:5673"
networks:
- django-networks
celery:
build: ./docker/python
container_name: celery
environment:
- Env=Production
depends_on:
- rabbitmq
- mysql
volumes:
- ./code:/code
command: >
bash -c "pip install -r requirements.txt
&& celery -A news.celery worker -l INFO
&& celery -A news.celery beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler"
networks:
- django-networks
mongo:
image: mongo:latest
container_name: mongo
ports:
- "27018:27017"
volumes:
- ./data/mongo:/data/db
networks:
- django-networks
networks:
django-networks:
driver: "bridge"
|
#!/bin/bash
docker-compose build
docker-compose stop
docker-compose up -d
|
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:7900;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
|
相关推荐
如果你关注技术新闻,那么Kubernetes似乎无处不在。它已经变得非常流行。实际上,如果不使用Kubernetes,开发人员和DevOps团队可能会觉得他们的应用程序开发流水线已经过时了。 Kubernetes是用于容器化应用程序的编排工具。从Docker容器开始,Kubernetes可以控制云应用程序和微服务的资源分配和流量管理。 这样,Kubernetes简化了面向服务的应用程序基础结构的许
撰写这篇博客非常有趣,虽然它可能不受某些人欢迎,但这是一个必须讨论的话题。 亲爱的开发者朋友们,我们需要开诚布公地讨论一下微服务以及某些不适宜的使用场景。这个过程可能不会轻松,但我们必须进行这样的探讨,否则我们无法取得成功。 如今,微服务极为流行,它是一种优秀的架构风格,有助于扩展系统和组织架构。许多成功的公司都在使用微服务(例如 Netflix、Spotify 等),因此,大多数公司正在使用或计
*作者:何家欢,阿里云 MSE 研发工程师 Why 微服务治理? 现代的微服务架构里,我们通过将系统分解成一系列的服务并通过远程过程调用联接在一起,在带来一些优势的同时也为我们带来了一些挑战。 如上图所示,可以看到词云中所展示的都是目前微服务架构在生产上所遇到的挑战。比如,最常见的流量激增的场景,近一年内 AIGC 突然爆火,相关网站/服务都存在过因为激增流量导致服务不可用的情况,可能会让我们错过
docker入门加实战—docker数据卷 容器是隔离环境,容器内程序的文件、配置等都在容器的内部,要读写容器内的文件非常不方便。 因此,容器提供程序的运行环境,但是程序运行产生的数据、程序运行依赖的配置都应该与容器进行解耦。 什么是数据卷 数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。 以Nginx为例,我们知道Nginx中有两个关键的目录: html:放置一些静
本文为翻译文章,点击查看原文。 如果你刚接触“Service Mesh“和“Envoy”,我这里有一篇文章可以帮你入门。 这是Envoy service mesh下的可观测性系列的第二篇文章,你可以在这里阅读第一篇关于分布式追踪的文章。 在微服务中谈及监控时,你可不能被蒙在鼓里,至少要知道问题出在哪儿了。 让我们看看Envoy是怎样帮助我们了解我们的服务运行状况的。在service mesh下,所
回到顶部