docker-compose安装和使用(自启、redis、mysql、rabbitmq、activemq、es、nginx、java应用)

news/2025/2/15 13:32:23/

1.在线安装docker-compose:

参考官网:https://docs.docker.com/compose/install/other/

docker-compose安装及简单入门

[Docker] docker-compose使用教程

Docker系列教程22-docker-compose.yml常用命令

# 安装(加速下载https://ghproxy.com/)
sudo curl -L https://ghproxy.com/https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose# 赋权
sudo chmod +x /usr/local/bin/docker-compose# 查看版本
docker-compose -v# 可以获取帮助
docker-compose -h

2、离线安装docker-compose:

参考:Docker - 离线安装 docker-compose(以CentOS系统为例)

(1)首先访问 docker-composeGitHub 版本发布页面:
  • https://github.com/docker/compose/releases
(2)下载docker-compose-Linux-x86_64

由于服务器是 CentOS 系统,则下载 Linux 版本的 Compose

Assets内下载:docker-compose-Linux-x86_64

(3)将其移动到 /usr/local/bin,并改名为“docker-compose

将下载下来的“docker-compose-Linux-x86_64”文件上传到服务器上,然后执行如下命令将其移动到 /usr/local/bin,并改名为“docker-compose”。

sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
(4)添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
(5)测试是否安装成功

最后使用 docker-compose -v 命令测试是否安装成功(如果提示“没有那个文件或目录”可以重启下服务器再试试):

docker-compose -v

3、卸载

直接删除下载的二进制文件即可,linux命令
sudo rm /usr/local/bin/docker-compose

4、使用命令:

注意:

1、要在docker-compos.yml文件所在的目录执行该命令才可关闭对应的容器

会停止并删除容器,docker网络等

2、compose文件启动是有顺序的,通过depends_on来指定该服务所依赖的服务,以提前依赖服务的启动顺序,但不是容器内部程序启动成功才去启动下一个容器,容器内部程序启动有耗时,如果你的程序之间互相有依赖,尽量分开写docker-compose文件,避免容器启动失败。

# 第一次部署jar的命令
docker-compose up -d zaxq-rabbitmq
# 以后更新jar后,直接重启即可
docker-compose restart zaxq-rabbitmq
# 查看日志
docker-compose logs zaxq-rabbitmq --tail 1000# 关闭一组服务
docker-compose down
# 创建并启动一组容器(1、若某个容器的配置文件改动了,执行该命令会创建新的容器并启动,2、如果配置文件没有改动,只是某个容器关掉了,则会启动关闭的容器,3、否则对启动的容器没有影响)
docker-compose up -d# 停止容器在创建
docker-compose stop zaxq-rabbitmq
# 删除容器在创建
docker-compose rm zaxq-rabbitmq

5、实战:

docker-compose.yml配置

vi docker-compose.yml

version: "3"
services:zaxq-eureka:image: java:8container_name: zaxq-eurekaports:- 9527:9527volumes:- /run/media/root/D/zaxq/java/log/eureka/:/logs/zaxq/eureka/       - /run/media/root/D/zaxq/java/jar/:/usr/jar/      working_dir: /usr/jar/command: bash -c 'java -jar -Duser.timezone=GMT+8 zaxq-eureka.jar --spring.profiles.active=test'environment:- SET_CONTAINER_TIMEZONE=true- CONTAINER_TIMEZONE=Asia/Shanghaizaxq-gateway:image: java:8container_name: zaxq-gatewayports:- 8082:8082volumes:- /run/media/root/D/zaxq/java/log/gateway/:/logs/zaxq/gateway/- /run/media/root/D/zaxq/java/tmp/gateway/:/data/zaxq/tmp/gateway/  - /run/media/root/D/zaxq/java/jar/:/usr/jar/      working_dir: /usr/jar/command: bash -c 'java -jar -Duser.timezone=GMT+8 zaxq-gateway.jar --spring.profiles.active=test'  environment:- SET_CONTAINER_TIMEZONE=true- CONTAINER_TIMEZONE=Asia/Shanghai        depends_on:- zaxq-eurekazaxq-auth:image: java:8    container_name: zaxq-authports:- 8089:8089volumes:- /run/media/root/D/zaxq/java/log/auth/:/run/media/root/D/zaxq/java/log/auth/- /run/media/root/D/zaxq/java/resources/auth/:/run/media/root/D/zaxq/java/resources/auth/- /run/media/root/D/zaxq/java/tmp/:/java-project/zaxq/tmp/- /run/media/root/D/zaxq/java/jar/:/usr/jar/      working_dir: /usr/jar/command: bash -c 'java -jar -Duser.timezone=GMT+8 zaxq-auth.jar --spring.profiles.active=test'   environment:- SET_CONTAINER_TIMEZONE=true- CONTAINER_TIMEZONE=Asia/Shanghai        depends_on:- zaxq-eureka- zaxq-gatewayzaxq-rabbitmq:image: java:8container_name: zaxq-rabbitmqports:- 1032:1032volumes:- /run/media/root/D/zaxq/java/log/rabbitmq/:/run/media/root/D/zaxq/java/log/rabbitmq/- /run/media/root/D/zaxq/java/resources/rabbitmq/:/run/media/root/D/zaxq/java/resources/rabbitmq/- /run/media/root/D/zaxq/java/jar/:/usr/jar/      working_dir: /usr/jar/command: bash -c 'java -jar -Duser.timezone=GMT+8 zaxq-rabbitmq.jar --spring.profiles.active=comm,test'   environment:- SET_CONTAINER_TIMEZONE=true- CONTAINER_TIMEZONE=Asia/Shanghai        depends_on:- zaxq-eureka- zaxq-gateway            - zaxq-basedata

6、制作成开机自启的服务

# 第一次部署jar的命令
docker-compose up -d zaxq-rabbitmq
# 以后更新jar后,直接重启即可
docker-compose restart zaxq-rabbitmq
# 查看日志
docker-compose logs zaxq-rabbitmq --tail 1000# 关闭一组服务
docker-compose down
# 创建并启动所有容器(1、若某个容器的配置文件改动了,执行该命令会创建新的容器并启动,2、如果配置文件没有改动,只是某个容器关掉了,则会启动关闭的容器,3、否则对启动的容器没有影响)
docker-compose up -d# 停止容器在创建
docker-compose stop zaxq-rabbitmq
# 删除容器在创建
docker-compose rm zaxq-rabbitmq------------------------------------------------------------------------------
#制作成开机自启的服务 原文链接:https://blog.csdn.net/catoop/article/details/110000462vi /usr/lib/systemd/system/pet-docker-compose.service
[Unit]
Description=zaxq-docker-compose.service
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service[Service]
Type=simple
Restart=on-failure
RestartSec=5
# WorkingDirectory=/path/to/docker/compose/project
ExecStart=/usr/local/bin/docker-compose -f /run/media/root/D/zaxq/java/jar/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /run/media/root/D/zaxq/java/jar/docker-compose.yml down[Install]
WantedBy=multi-user.target# 授权
chmod +x /usr/lib/systemd/system/pet-docker-compose.service
# 设置开机自启
sudo systemctl enable pet-docker-compose.service
# 启动
sudo systemctl start zaxq-docker-compose.service

7、其他扩展部署redis、mysql、rabbitmq、activemq、es、nginx、java应用

docker-compose(redis、mysql、rabbitmq、activemq、es、nginx、java应用)

version: "3"
services:redis:image: redis:6.2.6-alpine # 指定服务镜像,最好是与之前下载的redis配置文件保持一致container_name: redis # 容器名称#restart: on-failure # 重启方式restart: alwaysenvironment:- TZ=Asia/Shanghai # 设置时区volumes: # 配置数据卷- /home/yyt/data/redis/data:/data- /home/yyt/data/redis/redis.conf:/etc/redis/redis.conf          ports: # 映射端口- 6379:6379sysctls: # 设置容器中的内核参数- net.core.somaxconn=1024#- vm.overcommit_memory=1#command: /bin/sh -c "cat /etc/sysctl.conf && echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf && redis-server /etc/redis/redis.conf --appendonly yes" # 指定配置文件并开启持久化command:- sh- -c- |sysctl vm.overcommit_memory=1redis-server /etc/redis/redis.conf --appendonly yesprivileged: truemysql:#image: mysql:8.0image: mysqlcontainer_name: mysqlrestart: alwaysports:- 3307:3306volumes:- /home/yyt/data/mysql/config:/etc/my.cnf- /home/yyt/data/mysql/data:/var/lib/mysql/         environment:- MYSQL_ROOT_PASSWORD=ne7v51grgfs4rpe- TZ=Asia/Shanghai # 设置时区rabbitmq:image: rabbitmq# 固定主机名(防止持久化数据用户数据丢失问题)hostname: myrabbitmqcontainer_name: rabbitmqprivileged: trueports:- 5672:5672- 15672:15672volumes:- /home/yyt/zaxq/rabbitmq/conf/rabbitmq:/etc/rabbitmq- /home/yyt/zaxq/rabbitmq/data:/var/lib/rabbitmq- /home/yyt/zaxq/rabbitmq/log:/log/lib/rabbitmqenvironment:- RABBITMQ_DEFAULT_VHOST=/- RABBITMQ_DEFAULT_USER=admin- RABBITMQ_DEFAULT_PASS=zaxq@yyt- TZ=Asia/Shanghai# 这下面的命令全部到容器内部执行。 如果管理界面缺少overview等菜单 可能是浏览器的问题,推荐使用google浏览器  #command:#    - sh#    - -c#    - |#        chgrp rabbitmq /etc/rabbitmq ; chmod g+s /etc/rabbitmq#        rabbitmq-plugins enable rabbitmq_management#         rabbitmqctl add_user zaxq zaxq#         rabbitmqctl set_user_tags zaxq administrator#         rabbitmqctl add_vhost /zaxq#         rabbitmqctl set_permissions -p /zaxq zaxq ".*" ".*" ".*"activemq:image: webcenter/activemq:5.14.3container_name: activemqrestart: alwaysports:- 8161:8161- 61616:61616volumes:- /home/yyt/data/activemq/data:/data/activemq- /home/yyt/data/activemq/log:/var/log/activemq         environment:- ACTIVEMQ_NAME=activemq- ACTIVEMQ_ADMIN_LOGIN=admin- ACTIVEMQ_ADMIN_PASSWORD=yyt@activemqes:image: elasticsearch:7.17.10container_name: esrestart: alwaysenvironment:- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"- "TZ=Asia/Shanghai"- "discovery.type=single-node"#- cluster.initial_master_nodes=es01- "ELASTIC_PASSWORD=fkuy29wjzb18n3e"- cluster.name=docker-cluster- node.name=es01- network.host=0.0.0.0#配置允许跨域访问- http.cors.enabled=true- http.cors.allow-origin=*- http.cors.allow-headers=Authorization,X-Requested-With,Content-Length,Content-Type# 开启安全校验 并 配置密码执行: elasticsearch-setup-passwords interactive- xpack.security.enabled=true- xpack.security.transport.ssl.enabled=trueulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536ports:- "9200:9200"logging:driver: "json-file"options:max-size: "50m"max-file: "3"volumes:#- /home/yyt/data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /home/yyt/data/elasticsearch/plugins:/usr/share/elasticsearch/plugins- /home/yyt/data/elasticsearch/data:/usr/share/elasticsearch/data- /home/yyt/data/elasticsearch/log:/usr/share/elasticsearch/log#- /home/yyt/data/elasticsearch/config/:/usr/share/elasticsearch/config/elastic-stack-ca.p12 #- /home/yyt/data/elasticsearch/config/:/usr/share/elasticsearch/config/elastic-certificates.p12zaxq-eureka:#image: openjdk:17.0.2-slim-buster# 使用自己制作的#image: jdk17#image: registry.cn-shenzhen.aliyuncs.com/xielin/java8:1.0image: mdsol/java8-jrecontainer_name: zaxq-eurekaports:- 9527:9527volumes:- /home/yyt/zaxq/java/log/eureka/:/logs/zaxq/eureka/       - /home/yyt/zaxq/java/jar/:/usr/jar/    working_dir: /usr/jar/#command: bash -c 'java -jar   -Duser.timezone=GMT+8 zaxq-eureka.jar --spring.profiles.active=test'#command: bash -c "wait-for.sh 10.60.0.56:5672 -t 0 && java -jar   -Duser.timezone=GMT+8 zaxq-eureka.jar --spring.profiles.active=test"# /usr/local/bin/wait-for.sh 可以省略路径(-t 0 不设置超时时间),10.60.0.56:5672不能以rabbitmq容器名来代替ip,只有容器的服务名才行(容器名不行),即:有服务名则一定要使用服务名加端口,否则使用宿主机ip加端口。command:- sh- -c- |#wait-for.sh 172.31.4.137:5672 -t 0#wait-for.sh 172.31.4.137:6379 -t 0#wait-for.sh 172.31.4.137:3306 -t 0java -jar   -Duser.timezone=GMT+8 zaxq-eureka.jar --spring.profiles.active=test-gcweb-api:image: openjdk:8container_name: ygt-tourism-web-apirestart: alwaysports:- 10082:10082volumes:- /home/yyt/ygt_tourism/java/log/web-api/:/home/yyt/ygt_tourism/java/log/web-api/- /home/yyt/ygt_tourism/java/resources/public/:/home/yyt/ygt_tourism/java/resources/public/- /home/yyt/ygt_tourism/java/tmp/web-api/:/home/yyt/ygt_tourism/java/tmp/web-api/- /home/yyt/ygt_tourism/java/jar/:/usr/jar/working_dir: /usr/jar/command: bash -c 'java -jar -Duser.timezone=GMT+8 web-api.jar --spring.profiles.active=prod-yyt'environment:- SET_CONTAINER_TIMEZONE=true- CONTAINER_TIMEZONE=Asia/Shanghainetworks:- ygt_tourismnetworks:ygt_tourism:         

附件

mysql的config配置

touch config

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysqlpid-file=/var/run/mysqld/mysqld.pidcharacter-set-server=utf8
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000[client]
socket=/var/run/mysqld/mysqld.sock!includedir /etc/mysql/conf.d/
rabbitmq的config配置

touch rabbitmq.conf

loopback_users.guest = false
listeners.tcp.default = 5672
default_pass = zaxq@yyt
default_user = admin
default_vhost = /

http://www.ppmy.cn/news/1152732.html

相关文章

【docker - 安装】windows 10 专业版 安装docker,以及 WSL kernel version too low 解决方案

一、开启 Hyper-V 二、下载 docker 三、安装 docker 四、问题 Stage 1:打开 powershell,并执行 Stage 2:下载Linux内核更新包,并安装 Stage 3:将 WSL 2 设置为默认版本 Stage 4:安装所选的 Linux 分…

Kafka 开启SASL/SCRAM认证 及 ACL授权(一)认证

Kafka 开启SASL/SCRAM认证 及 ACL授权(一)认证。 kafka安全涉及3部份:传输加密,用户认证与授权,ZK开启ACL(Zookeeper存储了kafka的元数据以及用户信息,默认不开启acl所有用户可改,内网环境机器不对外开放可考虑使用默认不开启ZK ACL)。 官网地址:https://kafka.ap…

常用的语音芯片工作原理_分类为语音播报 语音识别 语音合成tts

1.0 语音芯片分类-语音播报-语音识别-语音合成 关于声音的需求,从始至终,都是很刚需的需求 。从语音芯片的演化就能看出很多的端倪,很多很多的产品他必须要有语音,才能实现更好的交互。而语音芯片的需求分类,其实也是很…

【MySQL】索引和事物

目录 ♫索引 ♪什么是索引 ♪索引的数据结构 ♪索引的使用 ♫事务 ♪什么是事务 ♪事务的特性 ♪事务的使用 ♫索引 ♪什么是索引 索引是存储在磁盘上的一个数据结构,通过索引可以快速地定位到存储在磁盘上的数据。 索引在提高查询速度的同时,还提…

[题] 前缀和 (含输入输出的耗时对比)

题目 前缀和 题解 前缀和模板 太简单了就多加了点东西:对比cin cout和scanf printf的耗时对比 代码 #include <iostream> using namespace std; const int N 100010; int n, m; int a[N], s[N]; int main(){scanf("%d%d", &n, &m);//原数组 for (in…

课题学习(七)----粘滑运动的动态算法

一、 粘滑运动的动态算法 在实际钻井过程中&#xff0c;钻柱会出现扭振和粘滑现象&#xff08;粘滑运动–B站视频连接&#xff09;&#xff0c;但并不总是呈现均匀旋转。如下图所示&#xff0c;提取一段地下数据时&#xff0c;转盘转速保持在100 r/min&#xff0c;钻头转速在0-…

【Android】关于touch设备TOOL_TYPE_STYLUS

这里通过log来查看触控笔的motionEvent&#xff0c; Overridepublic boolean onTouchEvent(MotionEvent event) {Log.i(tag, "event" event);return true;}Overridepublic boolean onGenericMotionEvent(MotionEvent event) {Log.i(tag, "G event" event…

命令行启动android模拟器

有时候不想打开android studio就能方便的启动模拟器&#xff0c;探索一番后发现可以通过命令行来启动&#xff0c;方便快捷。 环境准备 首先安装好android studio&#xff0c;android sdk&#xff0c;从android studio中安装好模拟器。 命令启动 如果直接在终端输入emulato…