docker部署springcloud项目

1. 准备工作

项目中用到了redis(3.2),mysql(5.7),nginx,elasticsearch(5.5.0),jdk(1.8)。

将项目中的properites或yml中的配置信息全部配置成默认的,

将生成的jar包上传到/usr/local/src/下面

2. 创建Dockerfile

注:Dockerfile F字母是小写

FROM java:8

MAINTAINER 457237252@qq.com

VOLUME /tmp

ADD zookeeper-test-0.0.1-SNAPSHOT.jar qjg.jar

RUN bash -c 'touch /qjg.jar'

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/qjg.jar"]

3. 安装mysql

docker search mysql  //查看都有哪些mysql在docker hub上,OFFICIAL 代表是否官方。

docker pull mysql:5.7

docker images 

docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p 23306:3306 --name mysql mysql:5.7

注:深有体会,用一般方式安装 mysql 用了4小时,用docker安装用了不到五分钟。

在配置文件的[mysqld]后添加lower_case_table_names=1

1.linux下输入命令查看docker容器CONTAINER ID :

命令: docker ps

2.进入docke容器

命令: docker exec -it f0b1c8ab3633 /bin/bash 

(f0b1c8ab3633为CONTAINER ID,请修改为你的CONTAINER ID  )

3. 不能使用vim命令的时候用如下命令:

apt-get update
apt-get install vim

3.进入mysql目录

命令: cd /etc/mysql/mysql.conf.d

4.查看mysql配置文件:

命令: ls

5.修改配置文件

命令:vim mysqld.cnf

按 i 进入编辑,加入lower_case_table_names=1

按Esc键,输入 :wq 保存退出

6.停止docker 

命令:systemctl stop docker

7.启动docker

systemctl restart docker

docker start d3a64017b824

4. 安装redis

docker pull redis:3.2

1、启动无密码的redis
docker run -p 6379:6379 -v $pwd/data:/data -d redis:3.2 redis-server --appendonly yes
备注:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v $pwd/data:/data : 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
2、启动带密码的redis
docker run -p 6379:6379 -d --restart=always redis:3.2 redis-server --appendonly yes --requirepass "your passwd"
备注:
-p 6379:6379 :将容器内端口映射到宿主机端口(右边映射到左边)
redis-server –appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
requirepass “your passwd” :设置认证密码
–restart=always : 随docker启动而启动

 5. 安装nginx

docker search nginx 

docker pull nginx 

docker run --name nginx -p 80:80 -d nginx

在/usr/local/下面创建nginx,在nginx下面创建html,conf,logs

然后执行

docker run -d -p 80:80 --name nginx -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/logs:/var/log/nginx nginx

然后就可以在nginx的目录下进行文件的编辑操作了。

6. 安装elasticsearch

docker pull elasticsearch:5.5.0

docker run -p 9200:9200 -p 9300:9300 --name elasticsearch -e "cluster.name=elasticsearch" -d elasticsearch:5.5.0

7. 常用命令

docker service create --replicas 5 -p 9000:9000 --name qjgdemo qjgdockerdemo     //创建5个qjgdemo。

docker service rm qjgdemo //删除这个集群。

docker service scale qjgdemo=1  //将五个集群缩减为四个集群。 注意 qjgdemo=1 中间没有空格,不然会报错。

docker service ls  //显示所有的服务集群。

docker node ls  //显示所有的集群节点的信息

docker stop 80f6f2843e6b   //停止运行容器

docker container rm 80f6f2843e6b  //删除停止运行的容器

 问题整理:

1. 创建集群部署时:

 解决方案:docker login 需要注册docker hub ,网址 https://hub.docker.com 注册一个就行。

2. 执行完docker swarm init 之后 提示执行

docker swarm join --token SWMTKN-1-2w8xcf26mzxplsgree6auc3jjfp1jz0lmzcy0afhyqpvz6n42l-1ri07ah73op54xys130kmr2uo 172.30.0.10:2377 这个。

3. docker service create --replicas 5 -p 9000:9000 --network appnet --network bridge --name qjgdemo qjgdockerdemo

Error response from daemon: network appnet not found 执行这个的时候报错了,改为如下命令:

docker service create --replicas 5 -p 9000:9000 --name qjgdemo qjgdockerdemo

4. 针对上面启动elasticsearch的时候报错了。错误信息如下;

 然后参考网页:https://blog.csdn.net/qq_43039260/article/details/87462377

修改了jvm.options文件

find / -name jvm.options

然后进行修改,修改之后重启elasticsearch就行了。

原文地址:https://www.cnblogs.com/baoyi/p/spring-cloud-docker.html