1. 安装docker
sudo apt-get install docker-ce=<version> docker-ce-cli=<version> containerd.io
sudo docker run hello-world
2. docker镜像
2.1 安装镜像
docker pull <image_name>:<image_tag>
docker pull mysql:5.7
镜像名称:镜像标签
2.2 运行镜像
docker run --name <container_name> <image_name>:<image_tag>
docker run --name mysql_db mysql:5.7
docker run --help 待整理
3. 使用docker-compose
3.1 docker-compose书写
version: '3'
services:
mysql_db:
image: mysql:5.7
container_name: mysql_db
volumes:
- ./volumes/mysql_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
ports:
- "3307:3306"
network_mode: bridge
3.2 docker-compose命令
docker-compose -f <compose_name> up
docker-compose -f <compose_name> up -d
docker-compose -f <compose_name> down
docker-compose -f <compose_name> stop
docker-compose -f <compose_name> start
docker-compose -f <compose_name> restart
4. docker内与主机文件互传
4.1 docker内向主机复制文件
docker cp <container_name>:<docker_path> <host_path>
docker cp mysql_db:/usr/local/etc /data/config
4.2 从主机向docker内复制文件
docker cp <host_path> <container_name>:<docker_path>
docker cp /data/config mysql_db:/usr/local/etc
5. docker部署odoo
5.1 镜像下载
docker pull odoo:13.0
docker pull nginx
docker pull postgresql:10.0
5.2 书写.yaml文件
version: '3'
services:
saas_db:
image: postgres:10
container_name: saas_odoo_db
volumes:
- ./data/pg:/var/lib/postgresql/data
environment:
- POSTGRES_USER=odoo
- POSTGRES_PASSWORD=odoo
- POSTGRES_DB=postgres
ports:
- "5432:5432"
restart: always
odoo:
image: odoo:13.0
container_name: saas_odoo
volumes:
- ./config:/etc/odoo
- ./odoo_log:/var/log/odoo
ports:
- "8069:8069"
depends_on:
- saas_db
links:
- saas_db:db
odoo_nginx:
image: nginx
container_name: odoo_nginx
volumes:
- ./data/nginx/html:/usr/share/nginx/html
- ./data/nginx/config/nginx.conf:/etc/nginx/nginx.conf
- ./data/nginx/config/vhosts:/etc/nginx/vhosts
- ./data/nginx/logs:/var/log/nginx
- ./data/nginx/ssl:/tmp
ports:
- "80:80"
5.3 nginx的vhost文件
server {
listen 80;
server_name test.roar.work;
location ~* \.txt$ {
root /usr/share/nginx/html/;
}
location /longpolling/ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://172.17.0.1:8072/longpolling/;
}
location / {
index index.html index.htm;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://172.17.0.1:8069;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
5.4 odoo.conf文件
[options]
addons_path =
data_dir = /var/lib/odoo
admin_passwd = demoshop_saas
db_maxconn = 200
dbfilter = ^%d$
limit_time_cpu = 100
limit_time_real = 1000
max_cron_threads = 2
osv_memory_age_limit = 1.0
osv_memory_count_limit = False
logfile = /var/log/odoo/odoo.log
log_path = /var/log/odoo
proxy_mode = True
db_host = saas_db
db_user = odoo
db_password = odoo
db_port = 5432
5.6 运行docker
docker-compose -f pg.odoo.nginx.yaml up -d
5.7 docker exec命令
docker exec [opptions] [image] [command]
-d 在后台运行,不会出现交互界面
-e 设置为环境变量
-i
-t 分配伪TTY
-u 用户名,-u root 以管理权限进入
docker exec -it mysql_db /bin/bash
docker exec -d rabbitmq_server rabbitmq-plugins enable rabbitmq_management