centos docker-compose
时间: 2023-04-30 21:06:32 浏览: 131
CentOS上使用Docker Compose需要先安装Docker和Docker Compose,然后在Docker Compose文件中定义服务和容器相关配置,最后使用Docker Compose命令启动和管理应用程序的多个容器。
相关问题
CentOS docker-compose安装Postgresql 17主从
### 部署 PostgreSQL 17 主从集群
为了在 CentOS 上通过 Docker Compose 实现 PostgreSQL 17 的主从复制配置,需遵循特定步骤来设置环境并编写 `docker-compose.yml` 文件。
#### 准备工作
确保已安装 Docker 和 Docker Compose。对于 Centos 系统而言,可以按照官方指南完成这两个工具的安装[^2]。考虑到 PostgreSQL 官方并没有提供版本号为 17 的镜像(当前最高稳定版远低于此编号),这里假设意图是指向最新可用的主要版本之一;实际操作时应替换为目标的具体标签。
#### 编写 docker-compose.yml 文件
创建一个新的目录用于保存项目文件,并在此目录下建立名为 `docker-compose.yml` 的文件:
```yaml
version: '3'
services:
db_master:
image: postgres:latest
container_name: pg_master
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
- ./master-data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- pgnet
db_slave:
image: postgres:latest
container_name: pg_slave
depends_on:
- db_master
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
PGDATA: /var/lib/postgresql/data/pgdata
POSTGRES_HOST_AUTH_METHOD: trust
command: >
bash -c "
echo 'host replication all 0.0.0.0/0 trust' >> $$PGDATA/pg_hba.conf &&
echo 'wal_level=replica' >> $$PGDATA/postgresql.conf &&
echo 'max_wal_senders=3' >> $$PGDATA/postgresql.conf &&
echo 'hot_standby=on' >> $$PGDATA/postgresql.conf &&
pg_basebackup -h db_master -D $$PGDATA -U replicator -P --write-recovery-conf &&
exec postgres -D $$PGDATA
"
volumes:
- ./slave-data:/var/lib/postgresql/data/pgdata
networks:
- pgnet
networks:
pgnet:
volumes:
master-data:
slave-data:
```
上述 YAML 文件定义了一个包含两个服务 (`db_master`, `db_slave`) 的网络,在其中设置了必要的环境变量以及命令以初始化数据库实例间的流复制连接[^1]。
请注意,这段脚本中的某些部分可能需要根据实际情况调整,比如用户名、密码等敏感信息应当被妥善保管而不是硬编码于配置文件内。
执行如下指令启动集群:
```bash
$ sudo docker-compose up -d
```
这将会以后台模式运行所有指定的服务容器。
可以教我用centos docker-compose搭建一个springboot整合的elk吗
当然可以,以下是详细的步骤:
1. 安装docker和docker-compose
在CentOS上安装Docker和Docker Compose,可以使用以下命令:
```
sudo yum update -y
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
```
Docker Compose是Docker的一个插件,需要单独安装:
```
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
```
2. 创建工作目录
在你选择的目录里创建一个名为`elk`的目录,并进入该目录。
```
mkdir elk && cd elk
```
在该目录中新建以下文件夹
```
mkdir -p logs/elasticsearch config/elasticsearch logs/kibana logs/logstash plugin
```
3. 创建elasticsearch docker compose
在`elk`目录下,创建一个名为`docker-compose.yml`的文件,并加入以下内容:
```yml
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- ./logs/elasticsearch:/usr/share/elasticsearch/logs
- ./config/elasticsearch:/usr/share/elasticsearch/config
ports:
- 9200:9200
- 9300:9300
networks:
- elk
networks:
elk:
```
说明:
- `elasticsearch`是容器名称,可以根据实际情况调整
- `discovery.type=single-node`表示只有一个节点
- `xpack.security.enabled=false`表示不启用安全模式
- `ES_JAVA_OPTS=-Xms512m -Xmx512m`表示分配512MB内存给Elasticsearch容器
- `./logs/elasticsearch:/usr/share/elasticsearch/logs`表示将本地的`logs/elasticsearch`目录映射到Elasticsearch容器内的`/usr/share/elasticsearch/logs`目录
- `./config/elasticsearch:/usr/share/elasticsearch/config`表示将本地的`config/elasticsearch`目录映射到Elasticsearch容器内的`/usr/share/elasticsearch/config`目录
- `9200:9200`和`9300:9300`表示将容器内的9200和9300端口映射到宿主机上,方便通过浏览器访问
4. 创建kibana docker compose
在`elk`目录下,继续编辑`docker-compose.yml`,添加以下内容:
```yml
version: '3'
services:
elasticsearch:
...
networks:
- elk
kibana:
image: docker.elastic.co/kibana/kibana:7.14.0
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
volumes:
- ./logs/kibana:/usr/share/kibana/logs
ports:
- 5601:5601
depends_on:
- elasticsearch
networks:
- elk
networks:
elk:
```
说明:
- `kibana`服务依赖于`elasticsearch`服务,必须要先启动`elasticsearch`
- `ELASTICSEARCH_HOSTS=http://elasticsearch:9200`表示连接到Elasticsearch容器的9200端口
- `5601:5601`表示将容器内的5601端口映射到宿主机上,方便通过浏览器访问
5. 创建logstash docker compose
在`elk`目录下,继续编辑`docker-compose.yml`,添加以下内容:
```yml
version: '3'
services:
elasticsearch:
...
networks:
- elk
kibana:
...
networks:
- elk
logstash:
image: docker.elastic.co/logstash/logstash:7.14.0
container_name: logstash
volumes:
- ./plugin:/usr/share/logstash/plugins
command: logstash -f /usr/share/logstash/pipeline/logstash.conf
ports:
- 5044:5044
- 5000:5000
depends_on:
- elasticsearch
networks:
- elk
networks:
elk:
```
说明:
- `logstash`服务依赖于`elasticsearch`服务,必须要先启动`elasticsearch`
- `./plugin:/usr/share/logstash/plugins`表示将本地的`plugin`目录映射到Logstash容器内的`/usr/share/logstash/plugins`目录
- `command: logstash -f /usr/share/logstash/pipeline/logstash.conf`表示运行`/usr/share/logstash/pipeline/logstash.conf`文件中的配置
- `5044:5044`和`5000:5000`表示将容器内的5044和5000端口映射到宿主机上,方便和应用程序交互
6. 配置logstash
在`elk`目录下,创建`logstash/pipeline`目录,并在其中新建名为`logstash.conf`的文件,并加入以下内容:
```conf
input {
tcp{
port => 5000
type => "spring-boot"
}
udp {
port => 5000
type => "spring-boot"
}
}
filter {
if [type] == "spring-boot" {
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:logtime} %{LOGLEVEL:loglevel} --- \[%{DATA:thread}\] %{DATA:class}.%{DATA:method} : %{GREEDYDATA:message}"
}
}
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "spring-boot-%{+YYYY.MM.dd}"
}
}
```
说明:
- `input`表示输入流设置,这里使用了TCP或UDP协议,监听5000端口
- `filter`表示过滤流设置,grok插件用来解析正则表达式。这里用正则表达式解析Spring Boot应用程序产生的日志文件
- `output`表示输出流设置,将过滤后的日志数据输出到Elasticsearch中
7. 使用Docker Compose启动服务
在`elk`目录下,运行以下命令启动服务:
```
docker-compose up -d
```
等待一些时间后,整个`ELK`服务就启动了。
8. 测试
启动所有容器后,让Spring Boot应用程序将日志发送到端口5000
打开浏览器,输入`http://你的ip:5601/app/discover`访问Kibana应用程序。在Kibana应用程序中,创建索引,并在Discover页面中查看项目的日志信息。
现在,您已经成功地使用Docker Compose在CentOS上搭建了一个Spring Boot整合的ELK。
阅读全文
相关推荐












