docker-compose使用与常用服务配置

目录


安装docker-compose

官方安装文档:docker-compose install


配置文件编辑与示例

进入目录并编辑配置文件:

1
2
cd /home/
vi docker-compose.yml

示例配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '1'
services:
mysql1:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
ports:
- 28002:3306
mysql2:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
ports:
- 28003:3306

常用命令

1
2
3
4
5
6
docker-compose up -d         # 后台启动所有服务
docker-compose start # 启动已存在的服务
docker-compose stop # 停止服务
docker-compose restart # 重启服务
docker-compose rm # 移除已停止的服务容器
docker logs -f <服务名> # 查看服务日志

服务部署示例

部署doclever

1
2
3
4
cd /home/
mkdir doclever
cd doclever
vi docker-compose.yml

配置文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
version: "2"
services:
DOClever:
image: lw96/doclever
restart: always
container_name: "DOClever"
ports:
- 10000:10000
volumes:
- /srv/doclever/file:/root/DOClever/data/file
- /srv/doclever/img:/root/DOClever/data/img
- /srv/doclever/tmp:/root/DOClever/data/tmp
environment:
- DB_HOST=mongodb://mongo:27017/DOClever
- PORT=10000
links:
- mongo:mongo

mongo:
image: mongo:latest
restart: always
container_name: "mongodb"
volumes:
- /srv/doclever/db:/data/db

常用操作:

1
2
3
docker-compose up -d
chmod +x /usr/local/bin/docker-compose # 如无权限
docker ps | grep doclever # 查看doclever相关容器

防火墙端口开放示例:

1
2
firewall-cmd --add-port=10000/tcp --zone=public --permanent
firewall-cmd --reload

访问 http://<服务器IP>:10000,登录后台修改密码。


部署gitlab

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
version: '2.3'
services:
redis:
restart: always
image: redis:5.0.9
command:
- --loglevel warning
volumes:
- redis-data:/var/lib/redis:Z

postgresql:
restart: always
image: sameersbn/postgresql:11-20200524
volumes:
- postgresql-data:/var/lib/postgresql:Z
environment:
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- DB_EXTENSION=pg_trgm,btree_gist

gitlab:
restart: always
image: sameersbn/gitlab:13.5.3
depends_on:
- redis
- postgresql
ports:
- "10080:80"
- "10022:22"
volumes:
- gitlab-data:/home/git/data:Z
healthcheck:
test: ["CMD", "/usr/local/sbin/healthcheck"]
interval: 5m
timeout: 10s
retries: 3
start_period: 5m
environment:
- DEBUG=false
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- REDIS_HOST=redis
- REDIS_PORT=6379
- TZ=Asia/Kolkata
- GITLAB_TIMEZONE=Kolkata
- GITLAB_HTTPS=false
- SSL_SELF_SIGNED=false
- GITLAB_HOST=localhost
- GITLAB_PORT=10080
- GITLAB_SSH_PORT=10022
- GITLAB_ROOT_PASSWORD=12345678
- GITLAB_ROOT_EMAIL=info@cxvh.com
# ...其余环境变量...
volumes:
redis-data:
postgresql-data:
gitlab-data:

常用命令:

1
2
3
docker-compose up -d
docker ps | grep gitlab_
docker logs -f <gitlab服务名>

常见问题:

  • 502错误:检查端口占用、swap配置等。

部署jenkins

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: "3"
services:
jenkins:
container_name: "jenkins"
image: jenkins/jenkins:lts
restart: always
user: jenkins:994
ports:
- "10055:8080"
- "50005:50000"
- "10056:10051"
volumes:
- ./data:/var/jenkins_home
- ./docker:/usr/bin/docker
- ./doocker.sock:/var/run/doocker.sock

常用命令:

1
2
3
4
5
docker-compose up -d
docker-compose start
docker-compose restart
docker-compose stop
docker-compose rm

常见问题与技巧:

  • 启动失败:chmod -R 777 data
  • 查看初始密码:cat data/secrets/initialAdminPassword
  • 插件加速:配置清华源

部署mongo

1
2
3
4
5
6
7
8
9
10
11
12
version: '3.1'
services:
mongo:
image: mongo
restart: always
ports:
- 27017:27017
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 101123
volumes:
- /home/mongotest:/data/db

常用操作:

1
2
3
docker-compose up -d
docker ps
docker exec -it mongo_mongo_1 mongo

MongoDB常用命令:

1
2
3
4
5
6
7
use testdb
db.createUser({user:'test',pwd:'123456',roles:[{role:'dbOwner',db:'testdb'}]})
db.auth('test','123456')
db.users.insertOne({name:'cxvh',age:12,email:'info@cxvh.com'})
db.users.find({})
db.users.updateOne({name:'test'},{$set:{email:'test@qq.com'}})
db.users.deleteOne({name:'test'})
  • 语法文档
  • 添加用户、角色示例:db.createUser({user:'admin',pwd:'123456',roles:[{role:'dbOwner',db:'doclever'}]})

部署redis

1
2
3
4
5
6
7
8
9
10
11
version: "3"
services:
redis-cxvh:
image: "redis"
restart: always
container_name: "redis-cxvh"
ports:
- 15001:6379
volumes:
- /home/rediscxvh:/data
command: ["redis-server", "--requirepass","123456"]

等价docker命令:

1
docker run -itd --restart=always --name redis-cxvh -p 15002:6379 -v /home/rediscxvh:/data redis redis-server --requirepass 123456

本文档持续更新,欢迎补充建议。