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

这篇具有很好参考价值的文章主要介绍了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_mysql
RUN 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=3307
MYSQL_USER=wyq
MYSQL_PASSWORD=Wyqgg@123
MYSQL_ROOT_PASSWORD=123456

#Redis服务映射主机端口号
REDIS_PORT=6380

#PHP端口号
PHP_PORT=9000

#rabbitMq
#端口号
RABBITMQ_PORT_SERVER=5672
RABBITMQ_PORT_CLIENT=15672
#
RABBITMQ_DEFAULT_USER=wyqgg
RABBITMQ_DEFAULT_PASS=123456


#Elasticsearch端口号
ELASTICSEARCH_PORT_OUTSIDE=9200
ELASTICSEARCH_PORT_INSIDE=9300

#kibana端口号
KIBANA_PORT=5601

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

docker-compose docker-compose.yml up -d

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

解读

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

若成功执行则如下图所示
docker-compose重新部署之前的环境和项目

项目运行

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

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

若成功执行则如下图所示
docker-compose重新部署之前的环境和项目文章来源地址https://www.toymoban.com/news/detail-425453.html

到了这里,关于docker-compose重新部署之前的环境和项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【nacos】【sentinel】【gateway】docker-compose安装及web项目部署

    【centos】【docker】安装启动 【docker-compose】安装使用 启动docker-compose配置文件

    2024年02月11日
    浏览(37)
  • docker-compose报错,/usr/local/bin/docker-compose: line 1: $‘\r‘: command not found ,重新安装docker即可

    下载最新版的docker-compose文件 添加可执行权限 查看版本 docker-compose version 1.16.1, build 1719ceb

    2024年02月13日
    浏览(36)
  • [每周一更]-(第57期):用Docker、Docker-compose部署一个完整的前后端go+vue分离项目

    将公司物理机项目改为容器化部署,最终方案是通过容器docker-compose部署使项目可以ip+端口访问,再通过物理机nginx代理进行https域名访问。 可能还有更好的方式,开一个nginx的容器,进行代理,但由于跟物理机80,443端口冲突,暂时没有采用。 可能目前处理不是最好的方式,不

    2024年02月14日
    浏览(31)
  • docker持久化部署vue前端nodejs后端项目-- 01. docker以及docker-compose在window以及linux的安装

    本章节主要来讲述docker desktop 界面版本使用以及docker-compose 的安装和使用 GIT地址:添加链接描述 docker 专栏:点击此处 章节 1 docker以及docker-compose在window以及linux的安装 2 项目对应的docker-compose结构 3 怎么将docker-compose项目部署到服务器上 4 配置服务器JENKINS环境 额外篇 章节

    2024年02月04日
    浏览(39)
  • 使用docker-compose.yml快速搭建开发、部署环境(nginx、tomcat、mysql、jar包、各种程序)以及多容器通信和统一配置

    image 镜像名称,可去镜像市场查找自己需要的 hostname 容器内服务名 container_name 容器名 volumes 可以把自己电脑的路径映射到容器中的文件夹中 networks 写同一个网络可以让容器之间进行通信 启动 在项目根目录的命令行中输入 docker-compose up 停止 在项目根目录的命令行中输入 d

    2024年02月12日
    浏览(38)
  • 【Docker-compose】基于Docker-compose创建LNMP环境并运行Wordpress网站平台

    参见使用Docker构建LNMP环境并运行Wordpress网站平台 Docker-Compose将所管理的容器分为三层,分别是 项目(project)、服务(service)以及容器(container) 。 Docker-Compose运行目录下的所有文件组成一个项目, 若无特殊指定项目名即为当前目录名 。 一个工程当中可包含多个服务,每个

    2024年02月15日
    浏览(38)
  • docker-compose的部署

    目录 一、compose的概述 1.1 yaml的概述 1.2 yaml的数据结构 1.2.1 docker composeyml文件的常用手段 1.3 docker compose 1.4 yml文件编写  二、部署compose 2.1 下载docker-compose安装包  2.2 部署docker-compose 2.3 部署docker-compose 2.4 开启验证  三、compose编排安装tomcat容器 总结 compose是docker官网开发的,

    2024年02月01日
    浏览(44)
  • docker-compose部署Jenkins

    1、docker安装 1.1 配置docker-yum源 yum -y install yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 1.2 查看可选择的docker-ce版本 yum list docker-ce --showduplicates|sort -r 1.3安装指定版本docker yum -y install docker-ce-19.03.9 ps:如果安装docker-ce-19.03.9报错: package docker

    2024年02月02日
    浏览(54)
  • Docker-Compose编排与部署

    目录 Docker Compose Compose的优点 编排和部署 Compose原理 Compose应用案例 安装docker-ce 阿里云镜像加速器 安装docker-compose docker-compose用法 Yaml简介 验证LNMP环境          Docker Compose 的前身是 Fig,它是一个 定义及运行多个 Docker 容器的工具 。可以使用 YAML 文件来配置应用程序的服

    2024年02月14日
    浏览(35)
  • 四十六、docker-compose部署

    一个项目肯定包含多个容器,每个容器都手动单独部署肯定费时费力。docker-compose可以通过脚本来批量构建镜像和启动容器,快速的部署项目。 使用docker-compose部署主要是编写docker-compose.yml脚本。 不论是Dockerfile还是docker-compose.yml脚本的编写都依赖上下文,所以需要明确部署文

    2023年04月19日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包