一、启动docker容器
- 启动redis:
docker run -p 6379:6379 --name redis -v d:\redis.conf:/etc/redis/redis.conf -d redis
- 启动MySQL
docker run -d -p 3306:3306 --name=mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wxshop mysql
- 初始化数据
mvn flyway:migrate
二、 部署APP1(第一份)
1.常规打包方式:
- 打包jar包:
mvn package -DskipTests
,-DskipTests
跳过测试
- 启动的时候修改端口,默认是8080端口,我们修改成8081
- 第一种方式:直接来指定一个端口:
java -Dserver.port=8081 -jar target/wxshop-0.0.1-SNAPSHOT.jar
- 第二种方式:可以灵活修改配置文件,以Application Property Files为例
[1] 首先创建一个vi my-new-app.yml
,可以在里面进行端口的修改等操作
spring:
application:
name: wxshop
datasource:
url: jdbc:mysql://localhost:3306/wxshop?useSSL=false&allowPublicKeyRetrieval=true
username: root
password: root
driverClassName: com.mysql.cj.jdbc.Driver
mybatis:
config-location: classpath:db/mybatis/config.xml
wxshop:
redis:
host: 127.0.0.1
port: 6379
server:
port: 8081
[2] 把my-new-app.yml
移入当前目录下的config目录,并改名为 application.yml
1. mkdir config
2. mv config/my-new-app.yml config/application.yml
[3] 启动程序java -jar target/wxshop-0.0.1-SNAPSHOT.jar
三、部署APP2(docker方式)
- 创建Dockerfile文件
FROM java:openjdk-8u111-alpine
RUN mkdir /app
WORKDIR /app
COPY target/wxshop-0.0.1-SNAPSHOT.jar /app
EXPOSE 8080
CMD [ "java", "-jar", "wxshop-0.0.1-SNAPSHOT.jar" ]
-
构建docker镜像出来
docker build . -t wxshop
,wxshop是镜像名 -
在8082端口起一个服务(APP2)
[1] 这时候需要一个全新的配置,vi config/docker-application.yml
,localhost改为本机的IP。因为容器中的localhost和宿主机的localhost不是同一个。
spring:
application:
name: wxshop
datasource:
url: jdbc:mysql://localhost:3306/wxshop?useSSL=false&allowPublicKeyRetrieval=true
username: root
password: root
driverClassName: com.mysql.cj.jdbc.Driver
mybatis:
config-location: classpath:db/mybatis/config.xml
wxshop:
redis:
host: localhost
port: 6379
[2] 启动服务,由于docker容器的Linux对Windows支持并不是很高,他只对C:\Users 目录下进行挂载,其他目录都没有办法挂载,不过可以根据“windows docker volume mount“来搜索问题
- 由于我们只是使用Windows下演示,就把
docker-application.yml
放到C:\Users
docker run -p 8082:8080 -v C:\Users\docker-application.yml:/app/config/application.yml -it wxshop
四、部署Nginx
- 创建nginx配置
vi config/nginx.conf
http {
upstream myapp1 {
10.0.75.1:8081;
10.0.75.1:8082;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
[2] 启动nginx
docker run -p 80:80 -v D:\Java_practice\wxshop\config\nginx.conf:/etc/nginx/nginx.conf:ro -it nginx
网友评论