Docker 从零开始部署java项目(包括构建镜像)

  • 创建新的虚拟机
  1. 使用vagrant+Vagrantfile启动虚拟机

 

  1. 从官方站点下载的centos/7这个 box 默认是关闭了账号密码登录的,通过vagrant ssh连接到虚拟机,然后去编辑/etc/ssh/sshd_config,将PasswordAuthentication的值修改为yes

/etc/ssh/sshd_config文件vagrant用户是看不到的,需要使用sudo vi /etc/ssh/sshd_config命令去编辑

修改完成后,重启sshd服务:sudo systemctl restart sshd

即可通过账户密码登录

  1. 使用xshell去链接虚拟机

虚拟机ip: (通过ip addr查)  账户:root  密码:vagrant

注意:VirtualBox 会与包括但不限于如下软件冲突,需要卸载这些软件,然后重启电脑; 冲突的软件:红蜘蛛,360,净网大师(有可能)等

  1. 修改 linux 的 yum 源

1)、备份原 yum 源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2)、使用新 yum 源

Curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo

3)、生成缓存

yum makecache

(建议Oracle VM VirtualBox让专门的人去管理,防止误删虚拟机)

  • 安装docker
  1. 卸载系统之前的 docker

sudo yum remove docker \

 docker-client \

 docker-client-latest \

 docker-common \

 docker-latest \

 docker-latest-logrotate \

 docker-logrotate \

 docker-engine

  1. 安装 Docker-CE

sudo yum install -y yum-utils \

 device-mapper-persistent-data \

 lvm2

  1. 设置 docker repo 的 yum 位置

sudo yum-config-manager \

 --add-repo \

 https://download.docker.com/linux/centos/docker-ce.repo

  1. 安装 docker,以及 docker-cli

sudo yum install docker-ce docker-ce-cli containerd.io

  1. 启动docker

sudo systemctl start docker

  1. 设置 docker 开机自启

sudo systemctl enable docker

  1. 配置 docker 镜像加速

阿里云,容器镜像服务

针对 Docker 客户端版本大于 1.10.0 的用户

可以通过修改 daemon 配置文件/etc/docker/daemon.json 来使用加速器

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

  • docker 安装 mysql
  1. 下载镜像文件

docker pull mysql:5.7

  1. 创建实例并启动

docker run --restart=always -p 3307:3306 --name mysql \

-v /mydata/mysql/log:/var/log/mysql \

-v /mydata/mysql/data:/var/lib/mysql \

-v /mydata/mysql/conf:/etc/mysql \

-e MYSQL_ROOT_PASSWORD=123456 \

-d mysql:5.7

参数说明

--restart=always 开机启动

-p 3307:3306:将容器的 3306 端口映射到主机的 3307 端口

-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机

-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机

-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机

-e MYSQL_ROOT_PASSWORD=123456:初始化 123456 用户的密码

  1. MySQL 配置

vi /mydata/mysql/conf/my.cnf

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

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

skip-name-resolve

注意:解决 MySQL 连接慢的问题 在配置文件中加入如下,并重启 mysql [mysqld] skip-name-resolve 解释: skip-name-resolve:跳过域名解析

  1. 通过容器的 mysql 命令行工具连

docker exec -it mysql mysql -uroot -p123456

  1. 设置 root 远程

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; flush privileges

  1. 进入容器文件系统

docker exec -it mysql /bin/bas

  • Docker 安装redis
  1. 下载镜像文件

docker pull redis

  1. 创建实例并启动

mkdir -p /mydata/redis/conf

touch /mydata/redis/conf/redis.conf

docker run --restart=always -p 6379:6379 --name redis -v /mydata/redis/data:/data \

 -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \

 -d redis redis-server /etc/redis/redis.conf

  • Docker 安装nginx
  1. 下载镜像

docker pull nginx

  1. 运行镜像

docker run --restart=always -d -p 8088:80 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/logs:/var/log/nginx nginx

部署nginx具体参考:https://www.cnblogs.com/zhangwuxuan/p/12672172.html

添加新的映射端口参考:https://www.cnblogs.com/chengshuai5421/p/13544614.html

配置项目路径时要用容器绝对路径参考:https://www.cnblogs.com/chengshuai5421/p/13544652.html

  • Docker构建项目镜像
  1. 将application-dev.yml,Dockerfile,jdk-8u151-linux-x64.tar.gz和mchcgen-0.0.1-SNAPSHOT.jar放在/mydata/javaDockerfile下

  1. 开始构建项目

docker build -t mchcgen:v0.1 .

  1. 查看镜像

  1. 将配置文件放在/mydata/java/dev/下方便修改

  1. 启动镜像

docker run --name mchcgen -d -p 9988:9988 mchcgen:v0.1 -v /mydata/java/dev/application-dev.yml:/application-dev.yml

由于容易的配置文件application-dev.yml和/mydata/java/dev/下的配置文件做映射,可以直接修改/mydata/java/dev/下的配置文件然后重启mchcgen

删除镜像报错: image is being used by stopped container 0d4ae078c085

执行一下命令

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm

docker images|grep none|awk '{print $3 }'|xargs docker rmi

(如果公司有自己的镜像仓库,可以把构建的镜像仓库推送到镜像仓库中,需要哪个版本直接拉取,无须重新构建)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值