### 下載nginx鏡像
### 下載uwsgi鏡像
### 制作項目鏡像
>[info] 在uwsgi鏡像的基礎上制作項目鏡像
假設:
項目目錄為`/home/www/application/project`
日志目錄為`/home/www/logs`
nginx配置目錄為`/home/www/nginx_conf`
**啟動uwsgi鏡像**
```
docker run -v /home/www/application:/application -w /application/project -t -i <uwsig鏡像id> /bin/bash
```
| 命令 | 解釋 |
| --- | --- |
| -v /home/www/application:/application | 將主機的`/home/www/application`目錄掛載到容器的`/application`目錄 |
| -w /application/project | 設定容器的工作目錄為`/application/project` |
**安裝項目依賴**
```
pip install requirements
```
**測試項目能否正常運行**
```
python manage.py runserver 8000
```
**退出容器**
```
exit
```
**制作項目鏡像**
```
docker commit -a "作者" <容器id> project:1.0.0
```
### 用項目鏡像啟動項目
**配置uwsgi啟動配置**,uwsgi.ini文件目錄`/home/www/application/project/uwsgi.ini`
```
[uwsgi]
uid = root
gid = root
chdir = /application/project
module = project.wsgi
callable = app
py-autoreload = 1
master = true
processes = 2
threads = 30
post-buffering = 65536
buffer-size = 65536
socket = 0.0.0.0:80
pidfile = /tmp/project.pid
chmod-socket = 665
vacuum = true
lazy-apps = true
daemonize=/logs/project.log
```
**啟動項目鏡像**
```
docker run -v /home/www/application:/application -v /home/www/logs:/logs -v /tmp:/tmp -w /application/project --expose=80 -d project:1.0.0 sh -c "uwsgi --ini uwsgi.ini && tail -f -n 20 /logs/project.log"
```
| 命令 | 解釋 |
| --- | --- |
| --expose=80 | 暴露容器的80端口 |
| uwsgi --ini uwsgi.ini | 用uwsgi啟動項目 |
| tail -f -n 20 /logs/project.log | 持續輸出項目日志,主要為了避免容器退出 |
### 啟動nginx鏡像
**查看項目容器ip地址**
```
docker inspect --format='{{.NetworkSettings.IPAddress}}' 項目容器id
```
**編輯項目的nginx配置文件**`/home/www/nginx_conf/project.conf`
```
server {
listen 80;
server_name localhost;
access_log /logs/project_nginx.log combined;
index index.html index.htm index.py;
charset utf-8;
client_max_body_size 75M;
location / {
uwsgi_pass 項目容器ip地址:80;
include uwsgi_params;
}
}
```
**啟動nginx鏡像**
```
docker run -v /home/www/nginx_conf:/etc/nginx/conf.d -v /home/www/application:/application -v /home/www/logs:/logs -v /tmp:/tmp --expose=80 -p 80:80 -d nginx
```
- 前端
- js學習
- 瀏覽器默認樣式
- webpack+vue
- 個人常用webpack打包依賴
- vue使用學習
- vue源碼學習
- webpack5配置babel
- 瀑布流布局
- 個人常用庫
- 其他
- centos搭建ss服務器
- ios配置Universal Links
- pdf2htmlEX使用
- python
- python操作redis
- linux部署Django
- dateutil庫(datetime模塊的擴展).md
- docker部署django
- mysql
- 基礎知識
- 常用函數
- join關聯查詢技巧
- linux
- shell備份mysql數據庫
- crontab定時任務
- centos7安裝部署gitlab服務器
- nginx安裝配置
- 收藏夾
- python
- 博客
- 工具
- 其他
- 前端