Docker——通过 Docker-Conpose 安装 Web项目

环境准备

该 We 项目是自己的一个开源项目,先通过 Docker-Conpose 这个技术,来对该 Web 项目进行一键配置环境及安装部署项目。需要 Docker-Conpose 环境,在此不进行描述。

Docker 安装

Docker-Conpose 安装

web 环境要求
  • Redis
  • RabbitMQ
  • Mysql
  • Java
目录结构

docker-Conpose 目录

Mysql 环境配置

通过 DockerFile 来配置我们的 MySQL 环境,并且通过 shell 脚本来自动创建数据库和导入数据等操作。在此参考该该博客的技术知识。

pjqdyd 博客地址

  1. createDB.sql

编写创建库的SQL脚本和进入数据库

create database `notest` character set utf8mb4 collate utf8mb4_general_ci;

USE `notest`;
  1. notest.sql

数据库表结构语句及数据。直接通过Navicat导出的SQL数据

  1. executeSql.sh

编写 shell 脚本

mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF

source $WORK_PATH/$FILE_0;

source $WORK_PATH/$FILE_1;

  1. Dockerfile

Dockerfile 文件的编写

#指定基础镜像,在其上进行定制
FROM mysql:5.7.29

#维护者信息
MAINTAINER Eternal <1125138343@qq.com>

#定义工作目录变量
ENV WORK_PATH /usr/local/work

#定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

#定义要执行的sql文件名
ENV FILE_0 createDB.sql
ENV FILE_1 notest.sql

#定义要执行的shell文件名
ENV CREATE_DATA_SHELL executeSql.sh

#创建工作文件目录
RUN mkdir -p $WORK_PATH

#把sql文件复制到工作目录下
COPY ./$FILE_0 $WORK_PATH/
COPY ./$FILE_1 $WORK_PATH/

#把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell
COPY ./$CREATE_DATA_SHELL $AUTO_RUN_DIR/

#给执行文件增加可执行权限
RUN chmod a+x $AUTO_RUN_DIR/$CREATE_DATA_SHELL

#RUN mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF && source $WORK_PATH/$FILE_0 && source $WORK_PATH/$FILE_1


Redis 环境配置
  1. redis.conf

修改 redis.conf 文件,配置 Redis 远程访问和密码

  1. Dockerfile

Dockerfile 文件的编写

FROM redis:5.0.7
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
web 环境配置
  1. ROOT.jar

添加 jar 至 docker/web 目录下

  1. Dockerfile

Dockerfile 文件的编写

#指定基础镜像,在其上进行定制
FROM openjdk:8-jdk-alpine

#维护者信息
MAINTAINER Eternal <1125138343@qq.com>
#这里的 /log 目录就会在运行时自动挂载为匿名卷,任何向 /log 中写入的信息都不会记录进容器存储层
#VOLUME /log
ADD ROOT.jar app.jar

EXPOSE 83
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/app.jar","--spring.profiles.active=docker","> /log/app.log"]
docker-compose.yml

docker-compose.yml 文件编写

version: '3.7'
services:
  mysql:
    container_name: notest_mysql
    build: ./sql
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    ports:
      - "3306:3306"
    volumes:
      - mysql:/var/lib/mysql
  redis:
    container_name: notest_redis
    build: ./redis
    ports:
      - "6379:6379"
    volumes:
      - redis:/data
  rabbitmq:
    container_name: notest_rabbitmq
    image: rabbitmq:3.7-management
    environment:
      - RABBITMQ_DEFAULT_USER=admin
      - RABBITMQ_DEFAULT_PASS=admin
    restart: always
    ports:
      - "15672:15672"
      - "5672:5672"
    volumes:
      - rabbitmq:/var/lib/rabbitmq
  web:
    container_name: notest_web
    restart: always
    build: ./web
    ports:
      - "83:83"
    links:
      - mysql
      - redis
      - rabbitmq
    depends_on:
      - mysql
      - rabbitmq
      - redis
    environment:
      MYSQLIP: mysql
      REDISIP: redis
      rabbitmq: rabbitmq
volumes:
  mysql:
  rabbitmq:
  redis:

Linux 环境部署 项目
  1. 把 docker 目录上传至 Linux 目录下。

如:/home/docker/notest
2. 进入目录

cd /home/docker/notest

    [root@localhost notest]# pwd
    /home/docker/notest
    [root@localhost notest]# ls
    docker-compose.yml  redis  sql  web
  1. 编译 dockercompose 文件
docker-compose up --no-start 
  1. 启动项目
docker-compose start 
  1. 查看web实时日志
docker-compose logs -f web
  1. 停掉 web 项目
docker-compose stop
  1. 启动 web 项目
docker-compose start
  1. 停掉并删除 web 容器和卷数据
docker-compose down -v

源码地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值