docker部署前后端分离项目手记
简介
刚刚接触基础的运维工作,采用的是docker部署的方式。其中,坑也踩了不少,记录一下。
摘要
为了方便部署,可以在本地安装docker,在本地使用docker打包好项目后上传至容器镜像服务,比如阿里云等,具体的使用阿里云等会有说明; 在服务端通过docker拉取上传的镜像,并创建容器。
详情
一、windows安装docker
1、下载安装包(https://www.docker.com/products/docker-desktop) 2、安装。如果操作系统不是专业版,则有可能报错。此时需要用管理员身份打开cmd,给操作系统伪装成专业版,命令如下: REG ADD “HKEY_LOCAL_MACHINEsoftwareMicrosoftWindows NTCurrentVersion” /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
到现在后台部署完成了,部署前端后就可以访问后台喽,数据库也可以远程连接了。
