在平时做各种小实验时,通过 docker-compose 可以快速的搭建一个环境,记录一下自己用到的一些清单
习惯
- 根目录是
/cs
(containers)
- 为每个项目创建一个目录,存放其相关的资源文件、docker-compose.yaml 等
Mysql
docker-compose.yaml1 2 3 4 5 6 7 8 9 10 11 12
| version : '2' services : mysql : image : mysql:latest container_name : mysql8 ports : - "3306:3306" volumes : - "/cs/mysql/data:/var/lib/mysql" environment : MYSQL_ROOT_PASSWORD : password123 restart : always
|
Redis
docker-compose.yaml1 2 3 4 5 6 7 8 9 10 11
| version : "2" services : redis : image : redis:latest container_name : redis volumes : - /cs/redis/data:/data ports : - "6379:6379" restart : "always" entrypoint : redis-server --requirepass "password123"
|
FTP
docker-compose.yaml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| version: '2' services: ftpd_server: image: stilliard/pure-ftpd:hardened container_name: pure-ftpd ports: - "21:21" - "30000-30009:30000-30009" volumes: - "/images/ftp/data:/home/guan/" - "/images/ftp/passwd:/etc/pure-ftpd/passwd" environment: PUBLICHOST: "192.168.1.90" FTP_USER_NAME: guan FTP_USER_PASS: mypass FTP_USER_HOME: /home/guan restart: always
|
如果连接卡在读取目录列表
可以参考 FileZilla 读取目录列表失败的解决办法 ftp
Nginx
docker-compose.yaml1 2 3 4 5 6 7 8 9 10 11 12
| version: '2' services: nginx-server: image: nginx:latest container_name: nginx-server ports: - "80:80" volumes: - "/cs/nginx/html:/usr/share/nginx/html" - "/cs/nginx/nginx.conf:/etc/nginx/nginx.conf" - "/cs/nginx/log:/var/log/nginx" restart: always
|
你还需要准备静态文件,并将其放到 /cs/nginx/html/
下
你还需要准备 nginx 的配置文件,其绝对路径为 /cs/ngix/nginx.conf
这是一个 nginx.conf 的示例:
nginx.conf1 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
| user nginx; worker_processes 1;
error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
events { worker_connections 1024; }
http { include /etc/nginx/mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on; #tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf; }
|
Postgresql
docker-compose.yaml1 2 3 4 5 6 7 8 9 10 11
| version : "2" services : postgres : image : "postgres:latest" container_name : "postgres" ports : - "5432:5432" volumes : - "/cs/postgres/data:/var/lib/postgresql/data" environment : POSTGRES_PASSWORD : "mypassword"
|
GitLab
版本区别
GitLab 有两个版本,CE 和 EE。而 EE 又提供了多种级别的付费计划(包括一种免费的计划)。
免费的 GitLab EE 与 CE 完全相同,区别在于升级到付费计划时,GitLab EE 更方便。如果有付费的可能,则最好安装 GitLab EE。如果完全没有付费的打算,则安装 GitLab CE。
可以查看 Community Edition or Enterprise Edition 获取详情
配置文件
docker-compose.yaml1 2 3 4 5 6 7 8 9 10 11 12 13
| web: image: 'gitlab/gitlab-ce:latest' restart: always hostname: 'web' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://192.168.7.11:80' ports: - '8080:80' volumes: - '/cs/gitlab/config:/etc/gitlab' - '/cs/gitlab/logs:/var/log/gitlab' - '/cs/gitlab/data:/var/opt/gitlab'
|
其中:
external_url
是必填的,其端口决定了其监听端口,我们在 ports
映射端口时需要注意。其地址会影响 clone
等按钮生成的 URL,在映射端口不一致的情况下,需要注意一下。
GITLAB_OMNIBUS_CONFIG
还支持其它参数,查看 Pre-configure Docker container 获取详情
- GitLab 启动速度较慢,可以耐心等待几分钟,默认用户名为
root
,密码会在首次访问时要求设置。
Harbor
下载离线安装包
1 2
| $ wget https://github.com/goharbor/harbor/releases/download/v2.0.2/harbor-offline-installer-v2.0.2.tgz $ tar xvf harbor-offline-installer-v2.0.2.tgz
|
修改配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| cd harbor cp harbor.yml.tmpl harbor.yml ```
编辑 `harbor.yml` 文件,其参数及含义可以参考 [Configure the Harbor YML File](https://goharbor.io/docs/2.0.0/install-config/configure-yml-file/)
对于测试,个人习惯修改的配置有:
```yaml hostname: 192.168.7.11 data_volume: /cs/harbor/harbor/data log: local: location: /cs/harbor/harbor/log
|
安装
对于测试环境,可以直接执行以下命令开始安装:
对于有要求的环境(如安全、高可用等),参考官方文档
Harbor 的默认用户是 admin
,默认密码是 Harbor12345
,首次登录后,应尽快更改密码。
参考连接
mac或者linux通过docker管理nginx部署静态文件
nginx 403 forbidden 二种原因
postgres
postgresql数据库改变data目录
Docker上部署FTP服务器(基于stilliard/pure-ftpd)
Install GitLab using Docker Compose
Harbor Installation and Configuration