Docker生产环境部署
权限配置
创建登录用户
$ sudo useradd admin
$ sudo passwd admin
// 设置密码
配置root用户不能远程登录
$ sudo vi /etc/ssh/sshd_config
注意: 是sshd_config,不是ssh_config
把
PermitRootLogin yes
改为:
PermitRootLogin no
重启sshd服务
$ sudo systemctl restart sshd.service
使用docker-compose管理docker
docker安装
docker-compose安装
在当前shell命令下执行:
$ sudo pip install -U docker-compose
项目目录结构
/share/
├── backup //备份文件
│ ├── mysql
│ ├── postgres
│ └── back.sh //备份运行脚本
├── db //挂载到docker下的数据卷
│ ├── mysql
│ └── postgresql
├── docker //docker相关的配置文件
│ ├── Dockerfiles
│ │ ├── mtl_node
│ │ └── mtl_php
│ ├── etc //docker挂在的配置文件
│ │ ├── apache2
│ │ ├── nginx
│ │ └── odoo
│ └── docker-compose.yml //docker-compose的配置文件
│
└── web //项目源码,挂在道docker下的数据卷
├── api
│ └── dist
├── erp
│ ├── addons
│ ├── openerp
├── images
│ └── dist
├── shop
└── website
建立docker镜像
$ cd /share/docker/Dockerfiles/mtl_node
$ sudo docker build -t mtl_node .
// 建立一个nodejs镜像
启动docker
$ sudo docker-compose -f /share/docker/docker-compose.xml -d up
// 如果处于调试模式,不用加 -d
备份数据
$ sudo crontab -e
// 写入
// 30 2 * * * /usr/bin/sh /share/backup/back.sh
// 上面语句表示,每天2点30分执行 back.sh脚本。
其他
docker开机自启动
在docker-compose.xml 写入 restart: always
docker-compose.xml 配置文件
version: '2'
services:
redis:
image: redis
ports:
- "6379:6379"
mysql:
image: mysql
ports:
- "3306:3306"
volumes:
- /share/db/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=666666
postgres:
image: postgres
environment:
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
volumes:
- /share/db/postgresql:/var/lib/postgresql/data
erp:
image: odoo
working_dir: /mnt/extra-addons
depends_on:
- postgres
links:
- postgres:db
ports:
- "8069:8069"
volumes:
- /share/web/erp/addons:/mnt/extra-addons
images:
image: mtl_node
working_dir: /opt/app/
volumes:
- /share/web/images/dist:/opt/app/dist
website:
restart: always
image: mtl_php
working_dir: /var/www/html
volumes:
- /share/docker/etc/apache2:/etc/apache2
- /share/web/website:/var/www/html
shop:
restart: always
image: mtl_php
working_dir: /var/www/html
depends_on:
- mysql
- redis
volumes:
- /share/docker/etc/apache2:/etc/apache2
- /share/web/shop:/var/www/html
links:
- mysql
- redis
nginx:
image: nginx
ports:
- "80:80"
volumes:
- /share/docker/etc/nginx:/etc/nginx
links:
- shop
- website
- erp
- images
网友评论