Ubuntu18.4内使用Docker-Compose
Docker-Compose 安装
先安装 Docker
官方安装教程:Install Docker Engine on Ubuntu | Docker Documentation
安装 Docker
1
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && sudo apt-get update && sudo apt-get install -y docker-ce
查看 Docker 版本
1
docker -v
配置镜像加速器 (也可以从 阿里云 获取
daemon.json
)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# 创建文件夹
sudo mkdir -p /etc/docker
# 读取输入的数据,并输出成 daemon.json 文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://epsax6ut.mirror.aliyuncs.com"],
"log-driver":"json-file",
"log-opts": {"max-size":"10m", "max-file":"3"}
}
EOF
# 重新加载配置文件
sudo systemctl daemon-reload
# 重启 docker
sudo systemctl restart docker
再安装 Docker-Compose
下载 Docker-Compose(参考官网使用最新的版本号,否则有可能下载不动)
1
2
3# sudo curl -SL https://github.com/docker/compose/releases/download/版本号/docker-compose-内核名称-硬件名称 -o 宿主机地址/docker-compose
sudo curl -SL "https://github.com/docker/compose/releases/download/v2.11.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose设置执行权限
1
sudo chmod +x /usr/local/bin/docker-compose
查看版本
1
docker-compose --version
Docker-Compose 部署 Nginx
获取映射文件(有映射文件的可以跳过这一步
)
可以像下面一样使用笨方法获取,也可以从网上找下载(蓝奏云下载)
在
/opt/docker/nginx/
下创建文件和文件夹1
2
3
4
5# 创建 nginx.conf 文件
touch nginx.conf
# 创建 conf.d, html, nginx 文件夹
mkdir conf.d html nginx拉取镜像
1
docker pull nginx
启动服务(
这个服务能运行就行,主要是为了拷贝文件
)1
docker run --name nginx -p 80:80 -d nginx
从容器中复制所需文件到宿主机中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# docker cp 容器名:文件 宿主机文件
# 拷贝 nginx.conf 文件
docker cp nginx:/etc/nginx/nginx.conf /opt/docker/nginx/
# 拷贝 conf.d 文件夹
docker cp nginx:/etc/nginx/conf.d /opt/docker/nginx
# 拷贝 html 文件夹
docker cp nginx:/usr/share/nginx/html /opt/docker/nginx
# 拷贝 日志 文件夹
docker cp nginx:/var/log/nginx /opt/docker/nginx
# ssl证书位置(暂时不需要)
/opt/docker/nginx/ssl/文件目录
1
2
3
4
5
6
7
8
9
10|-- /opt/docker/nginx
|-- conf.d
|-- default.conf # nginx 配置
|-- html # 前端打包后的文件放到这个文件夹
|-- 50x.html
|-- index.html
|-- nginx
|-- access.log
|-- error.log
|-- nginx.conf停止并删除项目
1
docker stop nginx && docker rm nginx
使用 Docker-Compose
在
/opt/docker/nginx/
下创建nginx.yml
,并复制下面代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15version: '3.8' # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/
services:
nginx:
restart: always # 重启策略
image: "nginx:latest" # 镜像名 (${image}:${tag})
container_name: "nginx" # 容器名 (自定义)
ports: # 端口号
- "80:80" # Http (宿主机:容器)
- "443:443" # Https (宿主机:容器)
volumes: # 数据卷
- /opt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf # 配置文件 (宿主机:容器)
- /opt/docker/nginx/conf.d:/etc/nginx/conf.d # 配置文件夹 (宿主机:容器)
- /opt/docker/nginx/html:/usr/share/nginx/html # 前端打包文件 (宿主机:容器)
- /opt/docker/nginx/nginx:/var/log/nginx # 日志文件夹 (宿主机:容器)运行项目
1
docker-compose -f ./nginx.yml up -d
访问项目
查看项目是否正常运行
1
docker ps -a
开启防火墙
阿里云
华为云
访问链接
宿主机IP:80
Docker-Compose 部署 Redis
获取 Redis.conf(有配置文件的可以跳过这一步
)
查看
redis
容器版本1
2
3# docker image inspect 容器名:latest|grep -i version
docker image inspect redis:latest|grep -i version根据官网链接,找到自己对应的版本仓库
1
https://github.com/redis/redis # 官网链接
找到
redis.conf
配置文件并下载
配置 Redis.conf
全局搜索
bind
,加上注释,以便外网访问全局搜索
requirepass
,取消前面的注释,并设置密码全局搜索
appendonly
,将no
改为yes
,以便持久化保存数据更多配置
上传到服务器的
/opt/docker/redis/
目录下
使用 Docker-Compose
在
/opt/docker/redis/
下创建redis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13version: '3.8' # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/
services:
redis:
restart: always # 重启策略
image: "redis:latest" # 镜像名 (${image}:${tag})
container_name: "redis" # 容器名 (自定义)
ports:
- "6379:6379" # 端口号 (宿主机:容器)
volumes:
- /opt/docker/redis/redis.conf:/etc/redis/redis.conf # 配置文件 (宿主机:容器)
- /opt/docker/redis/data:/data # 数据文件夹 (宿主机:容器)
command: [ "redis-server","/etc/redis/redis.conf" ] # 启动 redis 服务运行项目
1
docker-compose -f ./redis.yml up -d
访问项目(开启防火墙)
查看项目是否正常运行
1
docker ps -a
文件目录
1
2
3
4
5|-- /opt/docker/nginx
|-- redis.conf # redis 配置
|-- data # 数据地址
|-- appendonly.aof # 持久化AOP文件
|-- dump.rdb # 数据文件(停止服务后生成)
Docker-Compose 部署 Mysql
获取映射文件(有映射文件的可以跳过这一步
)
在
/opt/docker/mysql/
下创建文件夹1
2# 创建 conf.d, mysql, logs 文件夹
mkdir conf.d mysql logs拉取镜像
1
docker pull mysql
启动服务(
这个服务能运行就行,主要是为了拷贝文件
)1
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql
从容器中复制所需文件到宿主机中
1
2
3
4
5
6
7# docker cp 容器名:文件 宿主机文件
# 拷贝 conf.d 文件
docker cp mysql:/etc/mysql/conf.d /opt/docker/mysql
# 拷贝 mysql 文件夹
docker cp mysql:/var/lib/mysql/ /opt/docker/mysql文件目录
1
2
3
4
5
6
7
8
9|-- /opt/docker/nginx
|-- conf.d
|-- docker.conf
|-- mysql.conf # mysql 配置
|-- mysql # 数据
|-- #innodb_temp
|-- sys
|-- ...
|-- logs停止并删除项目
1
docker stop mysql && docker rm mysql
使用 Docker-Compose
在
/opt/docker/mysql/
下创建mysql.yml
,并复制下面代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16version: '3.8' # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/
services:
mysql:
restart: always # 重启策略
image: "mysql:latest" # 镜像名 (${image}:${tag})
container_name: "mysql" # 容器名 (自定义)
ports:
- "3306:3306" # 端口号 (宿主机:容器)
volumes: # 数据卷 (挂载)
- /opt/docker/mysql/conf.d:/etc/mysql/conf.d # 配置文件夹 (宿主机:容器)
- /opt/docker/mysql/mysql:/var/lib/mysql # 数据文件夹 (宿主机:容器)
- /opt/docker/mysql/logs:/logs # 日志文件夹 (宿主机:容器)
environment:
MYSQL_ROOT_PASSWORD: 123456 # root用户密码 (自定义)
TZ: Asia/Shanghai # mysql时区运行项目
1
docker-compose -f ./mysql.yml up -d
访问项目(开启防火墙)
查看项目是否正常运行
1
docker ps -a
Docker-Compose 部署 nacos
使用 Docker-Compose
在
/opt/docker/nacos/
下创建nacos.yml
1
2
3
4
5
6
7
8
9
10
11version: '3.8' # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/
services:
nacos:
restart: always # 重启策略
image: "nacos/nacos-server" # 镜像名 (${image}:${tag})
container_name: "nacos" # 容器名 (自定义)
ports: # 端口号
- "8848:8848"
environment:
MODE: standalone # 单机启动运行项目
1
docker-compose -f ./nacos.yml up -d
访问项目(开启防火墙)
查看项目是否正常运行
1
docker ps -a
访问
宿主机IP:8848/nacos
,(默认账户:nacos
,密码:nacos
)Nacos+Mysql
参考:nacos 部署 docker-compose + mysql 模式
Docker-Compose 部署 Rabbitmq
使用 Docker-Compose
在
/opt/docker/rabbitmq/
下创建rabbitmq.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14version: '3.8' # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/
services:
rabbitmq:
restart: always # 重启策略
image: "rabbitmq" # 镜像名 (${image}:${tag})
container_name: "rabbitmq" # 容器名 (自定义)
ports: # 端口号
- "15672:15672"
environment:
TZ: Asia/Shanghai # 时区
RABBITMQ_DEFAULT_USER: root # 登录账号
RABBITMQ_DEFAULT_PASS: 123456 # 登录密码
RABBITMQ_DEFAULT_VHOST: / # 表示权限,谁能访问,/全部所有运行项目
1
docker-compose -f ./rabbitmq.yml up -d
查看项目是否正常运行
1
docker ps -a