docker项目部署
简介
首先通过maven工具将微服务项目进行打包,然后通过Dockerfile将微服务jar包构建成docker镜像,配置nginx、redis,最后通过docker-compose工具实现对Docker容器集群的快速编排,微服务项目进行一键部署。
IDEA
修改配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| spring: datasource: druid: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://mysql:3306/reggie?characterEncoding=UTF-8&useSSL=false username: root password: 123456
redis: host: redis port: 6379 database: 0 password: 123456 jedis: pool: max-active: 8 max-wait: 1ms max-idle: 4 min-idle: 0 cache: redis: time-to-live: 1800000
reggie: path: /usr/local/source/imgDir/
|
注:将IP改为docker-composes.yml配置的服务名。
通过maven将微服务项目打包成jar:
服务器
在/root目录下创建reggie目录,将微服务jar包上传到该目录下。
服务器需要放行6379、3306、8080端口。
Dockerfile
将微服务jar包构建成新镜像。
第一步:编写Dockerfile,上传到与微服务jar包相同目录下。
1 2 3 4 5 6 7 8 9 10 11 12 13
| FROM java:8
MAINTAINER lrw
ADD reggie_take_out-1.0-SNAPSHOT.jar reggie_docker.jar
RUN bash -c 'touch /reggie_docker.jar' ENTRYPOINT ["java","-jar","/reggie_docker.jar"]
EXPOSE 8080
|
第二步:构建新镜像:docker build -t reggie_docker:1.0 .
nginx
静态资源项目部署,配置反向代理。
第一步:创建/lrwuse/nginx目录,并在nginx中创建html目录,将前端项目打包资源拷贝到html目录。

第二步:拷贝 nginx.conf 配置文件到nginx目录下。

第三步:修改 nginx.conf 配置文件。
注意:
- root配置需要与容器中的静态资源路径一致,反向代理proxy_pass可以使用服务名。
- 这些配置和文件后面会通过docker的容器数据卷挂载到容器实例里面。
redis
配置redis缓存。
第一步:在/lrwuse目录下创建redis目录,拷贝 redis.conf 配置文件到该目录下。

第二步:修改redis.conf 配置文件。
设置远程连接及密码:
- vim redis.conf
- 找到requirepass foobared,这里被注释,说明不需要密码,将注释去掉,foobared改为自己的密码
- 找到bind 127.0.0.1,这里表面只允许本机连接,注释即可支持远程连接
docker-compose
对Docker容器集群实现快速编排,微服务项目一键部署。
第一步:编写 docker-compose.yml 文件,将文件上传到reggie目录下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| version: "3"
services: nginx: image: nginx:latest ports: - "80:80" volumes: - /lrwuse/nginx/html:/usr/share/nginx/html - /lrwuse/nginx/nginx.conf:/etc/nginx/nginx.conf privileged: true networks: - reggie_net
reggie: image: reggie_docker:1.0 container_name: reggie ports: - "8080:8080" volumes: - /lrwuse/reggie:/data - /lrwuse/reggie/imgDir:/usr/local/source/imgDir networks: - reggie_net depends_on: - redis - mysql
redis: image: redis:6.0.8 ports: - "6379:6379" volumes: - /lrwuse/redis/redis.conf:/etc/redis/redis.conf - /lrwuse/redis/data:/data networks: - reggie_net command: redis-server /etc/redis/redis.conf
mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: '123456' MYSQL_ALLOW_EMPTY_PASSWORD: 'no' MYSQL_DATABASE: 'test' MYSQL_USER: 'lrw' MYSQL_PASSWORD: 'lrw123' ports: - "3306:3306" volumes: - /lrwuse/mysql/log:/var/log/mysql - /lrwuse/mysql/data:/var/lib/mysql - /lrwuse/mysql/conf:/etc/mysql/conf.d networks: - reggie_net command: --default-authentication-plugin=mysql_native_password
networks: reggie_net:
|
注意:nginx与redis容器数据卷挂载需要与本机创建的配置文件等目录一致。
第二步:将imgDir图片文件上传到/lrwuse/reggie目录下。
通过docker的容器数据卷挂载到容器实例中。
第三步:执行docker-compose。
执行命令:
- 检查文件是否有误:docker-compose config -q
- 执行容器编排:docker-compose up -d

Navicat
远程连接docker容器mysql,建库建表。
第一步:通过服务器ip、端口、数据库用户名和密码远程连接mysql。
第二步:配置mysql字符编码。
配置mysql字符编码:
- 在宿主机挂载的/lrwuse/mysql/conf文件夹的新建my.cnf:vim my.cnf
- 编辑 my.cnf 添加:
1 2 3 4 5
| [client] default_character_set=utf8 [mysqld] collation_server = utf8_general_ci character_set_server = utf8
|
- 查看mysql字符编码:SHOW VARIABLES LIKE ‘character%’;
第三步:建库建表。
建库建表:
- 创建reggie数据库,指定字符编码为utf8
- 执行reggie.sql文件,创建数据库表。