我的编程空间,编程开发者的网络收藏夹
学习永远不晚

docker-compose重新部署之前的环境和项目

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

docker-compose重新部署之前的环境和项目

因为目前工作中项目大部分都是使用的docker环境,使用docker-compose编排部署的,所以这段时间就自己尝试使用docker部署一下之前自己写的练手项目,其中的环境有
mysql8php7.4redis3rabbitmqnginxelasticsearch,当然这些技术有一些我都只是了解,平时工作用不到,自己也没有系统性的学习过,所以可能会有一些问题。

该docker项目的代码以及目录结构地址

https://gitee.com/wyqgg/blogdocker/tree/master/

dockerFile

php

这个镜像主要是安装一些项目中使用到的扩展,这里根据自己项目的需要来编写dockerfile,

FROM php:7.4-fpm#pdo_mysqlRUN docker-php-ext-install pdo_mysql \#mysqli&& docker-php-ext-install mysqli \#Redis&& docker-php-ext-install redis \#xdebug&& pecl install xdebug-2.8.1 \&& docker-php-ext-enable xdebug \# Swoole&& pecl install swoole-4.5.2 \&& docker-php-ext-enable swoole \# AMQP&& apt-get update \&& apt-get install -y librabbitmq-dev libssl-dev \&& pecl install amqp \&& docker-php-ext-enable amqp \# Seaslog&& pecl install seaslog \&& docker-php-ext-enable seaslog \

我这里面除了php需要编写特定的dockerFile其他的环境都没有编写特定的dockerFile

docker-compose.yml

这里使用${}获取到的是docker-compose.yml 同级目录下的.env文件中设置的变量的值.

docker-compose.yml

version: '3.0'#网络配置networks:  backend:    driver: ${NETWORKS_DRIVER}#服务器容器配置services:  nginx:    image: nginx:latest #dockerHub中获取该镜像    environment:      - TZ=${TZ} #时区    volumes:      - ${CONF_PATH_HOST}/nginx:/etc/nginx/conf.d/ #配置文件路径,设置数据卷,让本地和容器的数据共享      - ${WWW_PATH_HOST}:/usr/share/nginx/html #项目代码目录      ports:      - "81:80"      - "8001:8000"      - "8002:8002"      - "8003:8003"    networks:      - backend    restart: always #指定容器退出后重启策略为始终重启   php:    build:      context: ./php #通过上层目录的php目录中的DockerFile来构造该镜像    environment:    - TZ=${TZ}    volumes:      - ${CONF_PATH_HOST}/php/conf.d:/usr/local/etc/php/conf.d #php的扩展目录,notes:这里最好先把php镜像build好,然后将镜像/usr/local/etc/php/conf.d目录中的配置文件复制一份放到本地文件${CONF_PATH_HOST}/php/conf.d中。不然的话就把这行注释。这里是为了今后在加其他php扩展准备的。      - ${WWW_PATH_HOST}:/usr/share/nginx/html    ports:    - "${PHP_PORT}:9000"    networks:      - backend    restart: always  mysql:    image: mysql/mysql-server:8.0 #dockerHub中获取该镜像    environment:      - TZ=${TZ}      - MYSQL_USER=${MYSQL_USER}      - MYSQL_PASSWORD=${MYSQL_PASSWORD}      - MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD}    volumes:      - ${DATA_PATH_HOST}/mysql:/var/lib/mysql #数据文件      - ${CONF_PATH_HOST}/mysql/my8.cnf:/etc/my.cnf #配置文件    ports:      - "${MYSQL_PORT}:3308"    networks:      - backend    restart: always  redis:    image: redis:3     environment:      - TZ=${TZ}    volumes:      - ${CONF_PATH_HOST}/redis:/etc/redis #配置文件      - ${DATA_PATH_HOST}/redis:/data #data文件    ports:     - "${REDIS_PORT}:6379"    networks:     - backend  rabbitmq:    image: docker_rabbitmq:latest    environment:      - TZ=${TZ}      - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}      - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}    volumes:      - ${DATA_PATH_HOST}/rabbitmq:/var/lib/rabbitmq    restart: always    ports:      - "${RABBITMQ_PORT_CLIENT}:15672"      - "${RABBITMQ_PORT_SERVER}:5672"      networks:      - backend  elasticsearch:    image: elasticsearch:8.2.1    environment:      - discovery.type=single-node #以单一节点模式启动      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"      - bootstrap.memory_lock=true    volumes:      - ${CONF_PATH_HOST}/elasticsearch:/usr/share/elasticsearch/plugins #插件文件      - ${DATA_PATH_HOST}/elasticsearch:/usr/share/elasticsearch/data:rw #数据文件      - ${LOG_PATH_HOST}/elasticsearch:/usr/share/elasticsearch/logs:rw #日志文件    restart: always    ports:      - ${ELASTICSEARCH_PORT_OUTSIDE}:9200      - ${ELASTICSEARCH_PORT_INSIDE}:9300    networks:      - backend  kibana:    image: kibana:8.2.1    depends_on:       - elasticsearch #该镜像基于elasticsearch镜像,若elasticsearch镜像为build成功则该镜像也不会build成功。    environment:      ELASTICSEARCH_HOSTS: http://elasticsearch:9200      I18N_LOCALE: zh-CN    ports:     - ${KIBANA_PORT}:5601    networks:      - backend

.env

#设置时区TZ=Asia/Shanghai#设置网络模式NETWORKS_DRIVER=bridge#配置文件根目录CONF_PATH_HOST=./conf#宿主机上代码存放的目录路径WWW_PATH_HOST=./www#宿主机上mysql Redis数据存放的目录路径DATA_PATH_HOST=./data#宿主机上存放log日志的目录路径LOG_PATH_HOST=./log#Mysql服务映射主机端口号,可在宿主机127.0.0.1:3307访问MYSQL_PORT=3307MYSQL_USER=wyqMYSQL_PASSWORD=Wyqgg@123MYSQL_ROOT_PASSWORD=123456#Redis服务映射主机端口号REDIS_PORT=6380#PHP端口号PHP_PORT=9000#rabbitMq#端口号RABBITMQ_PORT_SERVER=5672RABBITMQ_PORT_CLIENT=15672#RABBITMQ_DEFAULT_USER=wyqggRABBITMQ_DEFAULT_PASS=123456#Elasticsearch端口号ELASTICSEARCH_PORT_OUTSIDE=9200ELASTICSEARCH_PORT_INSIDE=9300#kibana端口号KIBANA_PORT=5601

在docker-compose.yml目录执行下面命令就可以成功build一些镜像run一些容器,创建网络。将这些容器编排到一个环境下

docker-compose docker-compose.yml up -d

项目的目录结构
在这里插入图片描述

解读

conf目录:保存配置文件,可以独立配置每个容器的配置,执行完docker-compose文件可以直接生效,我这里因为记不住配置文件我基本上都是把容器先跑起来不建立数据卷,将该容器服务的默认配置copy到这个文件夹之后在添加容器卷,然后就可以根据自己的需求进行修改了。data目录:保存数据目录,比如redis、mysql的数据、若没有这个的话、每次down掉docker-composer服务,那么运行的数据就都丢失了。具体服务目录:里面都是具体服务的dockerFile,当然这里可以只有需要独立编写dockerFile的服务才建立这些文件夹,我这里是都建了。www目录:该目录绑定的就是nginx默认配置的起始页,当然这个是可以修改的。

若成功执行则如下图所示
在这里插入图片描述

项目运行

首先在www目录下拉取之前项目的代码根据项目需求修改nginx配置。恢复数据库成功执行项目

这个是我之前编写的项目,可以在docker环境下运行,有些界面还有些问题,需要我修复下代码,但是环境是没有问题的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIqZJ9oh-1664964855438)(img_2.png)]

若成功执行则如下图所示
在这里插入图片描述

来源地址:https://blog.csdn.net/wyqgg123/article/details/127175139

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

docker-compose重新部署之前的环境和项目

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用docker部署java项目运行环境的实现步骤是什么

今天就跟大家聊聊有关使用docker部署java项目运行环境的实现步骤是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、环境准备1. CentOS-7-x86_64-DVD-2
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录