返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >docker-compose重新部署之前的环境和项目
  • 548
分享到

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

dockernginxphpseasLogelasticsearch 2023-09-06 12:09:26 548人浏览 八月长安
摘要

因为目前工作中项目大部分都是使用的Docker环境,使用docker-compose编排部署的,所以这段时间就自己尝试使用docker部署一下之前自己写的练手项目,其中的环境有 Mysql8、PHP7

因为目前工作中项目大部分都是使用的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

--结束END--

本文标题: docker-compose重新部署之前的环境和项目

本文链接: https://lsjlt.com/news/397004.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作