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

这篇具有很好参考价值的文章主要介绍了docker-compose安装和使用(自启、redis、mysql、rabbitmq、activemq、es、nginx、java应用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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:8
        container_name: zaxq-eureka
        ports:
            - 9527:9527
        volumes:
            - /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/Shanghai
            
    zaxq-gateway:
        image: java:8
        container_name: zaxq-gateway
        ports:
            - 8082:8082
        volumes:
            - /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-eureka
    
    zaxq-auth:
        image: java:8    
        container_name: zaxq-auth
        ports:
            - 8089:8089
        volumes:
            - /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-gateway

    zaxq-rabbitmq:
        image: java:8
        container_name: zaxq-rabbitmq
        ports:
            - 1032:1032
        volumes:
            - /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/110000462

vi /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: always
        environment:
          - TZ=Asia/Shanghai # 设置时区
        volumes: # 配置数据卷
            - /home/yyt/data/redis/data:/data
            - /home/yyt/data/redis/redis.conf:/etc/redis/redis.conf          
        ports: # 映射端口
          - 6379:6379
        sysctls: # 设置容器中的内核参数
          - 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=1
                redis-server /etc/redis/redis.conf --appendonly yes
        privileged: true
 

    mysql:
        #image: mysql:8.0
        image: mysql
        container_name: mysql
        restart: always
        ports:
            - 3307:3306
        volumes:
            - /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: myrabbitmq
        container_name: rabbitmq
        privileged: true
        ports:
            - 5672:5672
            - 15672:15672
        volumes:
            - /home/yyt/zaxq/rabbitmq/conf/rabbitmq:/etc/rabbitmq
            - /home/yyt/zaxq/rabbitmq/data:/var/lib/rabbitmq
            - /home/yyt/zaxq/rabbitmq/log:/log/lib/rabbitmq
        environment:
            - 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.3
        container_name: activemq
        restart: always
        ports:
            - 8161:8161
            - 61616:61616
        volumes:
            - /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@activemq

    es:
        image: elasticsearch:7.17.10
        container_name: es
        restart: always
        environment:
            - "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=true
        ulimits:
            memlock:
                soft: -1
                hard: -1
            nofile:
                soft: 65536
                hard: 65536
        ports:
            - "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.p12


    zaxq-eureka:
        #image: openjdk:17.0.2-slim-buster
        # 使用自己制作的
        #image: jdk17
        #image: registry.cn-shenzhen.aliyuncs.com/xielin/java8:1.0
        image: mdsol/java8-jre
        container_name: zaxq-eureka
        ports:
            - 9527:9527
        volumes:
            - /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 0
                java -jar   -Duser.timezone=GMT+8 zaxq-eureka.jar --spring.profiles.active=test-gc
                
    web-api:
        image: openjdk:8
        container_name: ygt-tourism-web-api
        restart: always
        ports:
            - 10082:10082
        volumes:
            - /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/Shanghai
        networks:
            - ygt_tourism
            
networks:
    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=mysql

pid-file=/var/run/mysqld/mysqld.pid

character-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文章来源地址https://www.toymoban.com/news/detail-743747.html

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

到了这里,关于docker-compose安装和使用(自启、redis、mysql、rabbitmq、activemq、es、nginx、java应用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用docker/docker-compose通过自定义的redis.conf文件启动redis 7.2.3,附上docker-compose.yml的redis配置

    目录 一.复制以及使用自定义的redis.conf文件 1.在官网拷贝对应版本的配置文件内容新建redis.conf文件进行粘贴。(推荐) 2.也可以去官网下载对应版本的redis的tar.gz包,解压后在根目录下找到redis.conf文件复制也可也可。 二.配置redis.conf文件(这里有个小坑) 1.注释掉bind 127.0.0.1

    2024年02月03日
    浏览(59)
  • Docker-compose安装mysql

    本系列文章主要介绍使用docker-compose部署mysql,nginx,redis等中间件,前后分离微服务项目部署流程。不介绍docker安装以及基础命令,话不多说首先进入mysql安装教学。 首先创建个目录用来存放docker-compse文件以及mysql数据存放地址 docker-compose文件如下

    2023年04月25日
    浏览(41)
  • Docker安装MySQL、Redis如何自启?

    Docker自启:http://t.csdn.cn/L2v55 重新启动虚拟机,Docker自动启动之后,发现MySQL、Redis都没有启动。 docker ps 没查到有启动的容器。 docker ps -a 查看所有的容器。 结果:  结果:  (1)重新启动虚拟机 (2)docker ps 查看已经启动的容器,是否存在 至此,Redis和MySQL都可以自动启动

    2024年02月12日
    浏览(51)
  • 使用docker-compose搭建mysql主从

    目录 一、docker-compose和主从的简介 1、docker-compose 2、mysql主从 3、为什么要使用docke-compose? 二、部署mysql主从集群 1、mysql-master主库 2、mysql-slave从库 三、安装docker-compose 1、上传文件 2、添加可执行权限 3、创建并编辑docker-compose.yml文件 4、运行docker-composeysql.yml 四、配置mysql主

    2024年02月07日
    浏览(38)
  • 安装使用docker-compose

    Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排 Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若

    2024年02月15日
    浏览(38)
  • 使用docker-compose 部署 MySQL(所有版本通用)

    我这里使用的是MySQL8.0.18,可以自行选择需要的版本。 这里需要给MySQL做点自定义的配置,比如时区字符编码等。 以交互式命令进入容器,也可以使用navicat等客户端连接,使用Docker安装MySQL会给root用户开启远程访问。 使用MySQL自带客户端连接工具连接 PS:如果远程连接不上可

    2024年02月04日
    浏览(48)
  • docker及docker-compose安装及使用

    docker安装及使用 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 虚拟机:虚拟机是通过Hy

    2024年02月10日
    浏览(36)
  • Ubuntu使用docker-compose安装chatGPT

    ubuntu环境搭建专栏🔗点击跳转 Welcome to the AI era! 使用docker compose安装 在 /usr/local 文件夹下创建 chatgpt 创建 docker-compose.yaml docker-compose.yaml内容如下 随后使用命令创建容器并运行 然后访问一下 http://ip:3000 ,看看 𝓘 𝓵𝓸𝓿𝓮 𝔂𝓸𝓾 𝓽𝓱𝓻𝓮𝓮 𝓽𝓱𝓸𝓾𝓼𝓪𝓷𝓭

    2024年01月21日
    浏览(35)
  • docker-compose部署redis

    docker-compose是什么? Docker Compose是一个用于 定义和运行多个容器Docker应用程序的工具 。它允许您定义一组容器,这些容器组成一个完整的应用程序,且这些容器之间可以互相通信。通过Docker Compose,您可以使用一个单独的文件来定义应用程序的 服务、网络、卷等元素,并且可

    2024年02月12日
    浏览(36)
  • 【初识 Docker | 中级篇】 Docker 中使用 docker-compose 安装 Nacos

    可以按照以下步骤在 Docker 中安装 Nacos 拉取 nacos 镜像: docker pull nacos/nacos-server 运行 nacos 容器: docker run --name nacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server 访问 nacos 控制台:打开浏览器,在地址栏中输入 http://localhost:8848/nacos ,访问 nacos 控制台。 提示:以下是本篇文章正文内容

    2024年02月15日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包