docker部署前后端分离项目手记
简介
刚刚接触基础的运维工作,采用的是docker部署的方式。其中,坑也踩了不少,记录一下。
摘要
为了方便部署,可以在本地安装docker,在本地使用docker打包好项目后上传至容器镜像服务,比如阿里云等,具体的使用阿里云等会有说明;
在服务端通过docker拉取上传的镜像,并创建容器。
详情
一、windows安装docker
1、下载安装包(https://www.docker.com/products/docker-desktop)
2、安装。如果操作系统不是专业版,则有可能报错。此时需要用管理员身份打开cmd,给操作系统伪装成专业版,命令如下:
REG ADD “HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion” /v EditionId /T REG_EXPAND_SZ /d Professional /F
二、打包镜像(以Java项目为例)
1、打包前请结合自己需求准备好DockerFile文件,并和build好的jar包放在同一目录下,执行一下命令:
docker build -t 镜像名称 .
请注意最后的那个点不能丢了
等待打包完毕后,执行docker images命令 可以查看刚刚打包好的镜像。为了验证镜像的正确性,支持在本地执行docer run 命令创建容器,测试无误后进行上传;
三、上传镜像
1、docker tag 镜像ID……
2、docker push ……
说明:具体命令,提供服务的平台会有详细说明,步骤也很简单。
四、服务器操作
1、执行docker pull下载镜像;
2、docker run -d -p宿主机端口:容器端口 --name 容器名称。
实例来一个吧 光说不练嘴把式
实例
一、客户端下载docker
略
二、打包镜像
1、准备dockeFile
FROM java:8
RUN mkdir -p /xxx/xxx && \
cd /xxx/xxx &&\
touch application.properties
COPY /xxx.jar /xxx/app.jar
EXPOSE 9041
WORKDIR /xxx
CMD ["sh", "-c", "java -server -Xmx512m -Xms256m -Xss256k -jar app.jar"
2、打包
docker build -t 镜像 .
3、上传
docker images 获取创建的容器id
docker tag……
docke psuh……
服务端操作
1、创建docker mysql容器
docker search mysql 寻找mysql版本
docker pull 选择一个版本下载 --> docker pull mysql:5.6
docker image 查看下载的MySQL镜像
// 创建挂载目录,避免重启后数据丢失
mkdir -p /usr/data/mysql/logs /usr/data/mysql/data /usr/data/mysql/conf
cd /data/mysql
touch my.cnf
// 然后使用vim编辑my.cnf文件,文件内容如下:
#-----------------------------开始-----------------------------------
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#------------------------------结束---------------------------------
docker run --restart=always -p 3306:3306 --name mysql -v /usr/data/mysql/conf:/etc/mysql -v /usr/data/mysql/logs:/var/log/mysql -v /usr/data/mysql/data:/var/lib/mysql -v /usr/data/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
2、创建Java后台容器
docker run -d --name xxx -p 8080:9041 --link MySQL容器名称:localhost -v /root/xxx/xxx/result:/xxx/result -v /root/xxx/xxx/log:/xxx/log -v /root/xxx/xxx/config:/xxx/config 拉取的镜像ID
到现在后台部署完成了,部署前端后就可以访问后台喽,数据库也可以远程连接了。
上一篇: 使用前置通知进行访问控制:通过方法参数决定是否可以访问该方法,分别使用基于XML的声明式AspectJ和基于注解的声明式AspectJ来实现。
下一篇: curl命令POST请求可能会遇到的坑
推荐阅读