目录
Centos7安装Docker
[root@localhost ~]# yum -y install docker
②启动 Docker 后台服务
[root@localhost ~]# service docker start
Docker安装MySQL
①拉取镜像
[root@localhost ~]# docker pull mysql:5.7.31
②运行镜像
[root@localhost ~]#
docker run -p 3306:3306 --restart=always --privileged=true --name mysql -v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=mysql-root-pwd -d mysql:5.7.31
③配置文件示例,配置在/home/mysql/conf中新建文件my.cnf,内容如下
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
## 同一局域网内注意要唯一
server-id=1024
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
secure_file_priv=/var/lib/mysql
default_authentication_plugin=mysql_native_password #设置密码规则
max_connections=1000 #最大连接数设置 根据实际需要 自行调整
default-time-zone=Asia/Shanghai
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
Docker安装Redis
①拉取镜像
[root@localhost ~]# docker pull redis
②运行镜像
[root@localhost ~]#
docker run --restart=always -p 6379:6379 --name redis -v /home/redis/myredis.conf:/etc/redis/redis.conf -v /home/redis/data:/data -d redis:6.2.6 redis-server /etc/redis/redis.conf --appendonly yes --requirepass rds-root-pwd
Docker安装Nginx
①拉取镜像:
[root@localhost ~]# docker pull nginx
②创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html
③生成容器
docker run --name nginx -p 9001:80 -d nginx
④将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
⑤将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
⑥将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
⑦删除原容器:docker stop nginx;docker rm nginx
⑧重新生成容器:
docker run -p 80:80 -p 443:443 --restart=always --privileged=true --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/ssl:/usr/share/nginx/ssl -d nginx:latest
Docker部署Web端
①打包:npm run build:prod,将dist上传至服务器/home/data/web路径下
②配置Dockerfile,路径:/home/data/web/Dockerfile,内容如下
# 基础镜像使用Nginx
FROM nginx
# 作者
MAINTAINER attr
# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
# 将前端dist文件中的内容复制到nginx目录
COPY ./dist/ /usr/share/nginx/html/
# 用本地的nginx配置文件覆盖镜像的Nginx配置
COPY nginx.conf /etc/nginx/nginx.conf
# 暴露端口
EXPOSE 80
③构建镜像:docker build -t jinhai_lwms_web .
④生成容器:
docker run -it -d --restart always --name jinhai_lwms_web -p 11009:80 jinhai_lwms_web
Docker部署Server端
①导出jar包,将其上传至服务器路径/home/data/server下
②配置Dockerfile,路径:/home/data/server/Dockerfile;内容如下
FROM primetoninc/jdk:1.8
MAINTAINER attr
ENV JAVA_OPTS=""
ENV SERVER_PORT 80
EXPOSE ${SERVER_PORT}
ENV UPLOAD_FILE_PATH /uploadfile/
VOLUME /uploadfile
ENV UPLOAD_THUMBNAIL /uploadthumbnail/
VOLUME /uploadthumbnail
ARG JAR_FILE
ADD dianchang-tms-server-1.0.jar app.jar
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/urandom -Duser.timezone=GMT+08 -jar /app.jar" ]
③构建镜像:docker build -t jinhai_lwms_server .
④生成容器:
-
docker run -it -d --restart always --name jinhai_lwms_server -p 11008:8080 -v /home/data/server/logs:/logs/ -v /home/data/server/uploadfile:/uploadfile/ -v /home/data/server/uploadthumbnail:/uploadthumbnail/ -e MYSQL_SERVER=IP:3306/db_jinhai_lwms -e REDIS_HOST=IP -e REDIS_PORT=6379 -e REDIS_DB=4 jinhai_lwms_server
查看容器并访问
①查看容器:docker ps
②访问项目:http://ip地址
一键部署
①dockerrun.sh路径如下:/home/work/dockerrun.sh,内容如下:
#!/bin/bash
read -p "请输入镜像版本号,格式yyyymmdd :" tag
echo "当前镜像版本号:${tag}"
projectName='dianchang_tms_web'
cd /home/data/web
echo "${projectName} will docker build & run"
docker build -t ${projectName}:"$tag" .
docker stop ${projectName} && docker rm ${projectName}
docker run -it -d --restart always --name ${projectName} -p 11009:80 ${projectName}:"$tag"
projectName='dianchang_tms_server'
cd /home/data/server
echo "${projectName} will docker build & run"
docker build -t ${projectName}:"$tag" .
docker stop ${projectName} && docker rm ${projectName}
docker run -it -d --restart always --name ${projectName} -p 11008:80 -v /home/data/server/logs:/logs/ -v /home/nginx/ssl/uploadfile:/uploadfile/ -v /home/data/server/uploadthumbnail:/uploadthumbnail/ -e MYSQL_SERVER=IP:3306/db_dianchang_tms -e REDIS_HOST=IP -e REDIS_PORT=6379 -e REDIS_DB=4 ${projectName}:"$tag"
echo "应用部署完成,请查看日志是否有问题!!!!!!!!!!!!!!!!!!!!!"
②日常部署需将dist和jar上传至上述步骤中提及的指定位置,再执行dockerrun.sh
(sh /home/work/dockerrun.sh)即可