Docker部署微服務(Cloud-Admin)
阿新 • • 發佈:2018-12-24
文章目錄
Docker的安裝
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
sudo yum install docker-ce
sudo systemctl enable docker
sudo systemctl start docker
sudo groupadd docker
//將當前使用者加入docker組
sudo usermod -aG docker $USER
安裝consul、redis、rabbitmq
docker network create -d bridge spring-net
docker pull consul
docker pull redis
docker pull rabbitmq:management
//consul
docker run -d -p 8500:8500 --name consul --network spring-net consul agent -server -bootstrap-expect=1 -client 0.0.0.0 -ui
//-bootstrap-expect:指定期望的server節點的數量,並當server節點可用的時候,自動進行bootstrapping
//rabbitmq
docker run -d --name rabbitmq --network spring-net -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
//redis 需要先配置好/etc/redis.conf
docker run -p 6379:6379 --network spring-net -v /etc/redis.conf:/etc/redis/redis.conf -v /opt/docker/redis:/data --name redis -d redis redis-server /etc/redis/redis.conf --appendonly yes
//redis-server --appendonly yes : 在容器執行redis-server啟動命令,並開啟redis持久化配置
安裝nginx
docker pull nginx
docker run -d --rm -p 80:80 --name nginx nginx
docker cp nginx:/etc/nginx /etc/nginx
docker stop nginx
server {
listen 80;
server_name localhost;
charset utf-8;
root /opt/nginx/dist;
index index.html index.htm;
location / {
#root /opt/nginx/dist;
#index index.html index.htm;
}
location /jwt/ {
# 轉發請求到後端服務閘道器
proxy_pass http://127.0.0.1:8765/jwt/;
}
location /api/ {
proxy_pass http://127.0.0.1:8765/api/;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
docker run --name nginx --network spring-net -p 80:80 -d -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /etc/nginx/conf.d:/etc/nginx/conf.d -v /opt/nginx/dist:/opt/nginx/dist nginx
部署微服務
//在/usr/lib/systemd/system/docker.service中新增引數
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
//重新讀取配置檔案、重啟服務
systemctl daemon-reload
systemctl restart docker
<build>
<finalName>ace-gateway</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<dockerHost>http://你的伺服器地址:2375</dockerHost>
<imageName>${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
redis:
host: ${REDIS_HOST:localhost}
rabbitmq:
host: ${RABBIT_MQ_HOST:localhost}
consul:
host: ${CONSUL_HOST:localhost}
FROM livingobjects/jre8
VOLUME /tmp
ADD ace-gateway.jar app.jar
ENV REDIS_HOST=redis
ENV RABBIT_MQ_HOST=rabbitmq
ENV CONSUL_HOST=consul
RUN bash -c 'touch /app.jar' \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Dfile.encoding=utf-8","-jar","/app.jar"]
docker run -d -p 8765:8765 --network spring-net --name geteway iot-gateway
防火牆開啟埠
//檢視已開放埠
firewall-cmd --list-ports
//新增埠 consul:8500 rabbitmq後臺管理介面:15672
firewall-cmd --zone=public --add-port=8500/tcp --permanent
//重啟防火牆
systemctl restart firewalld