编写Nginx配置文件default.conf

  1. server {
  2. listen 80;
  3. server_name localhost;
  4. location / {
  5. root /usr/share/nginx/html;
  6. try_files $uri $uri/ /index.html;
  7. index index.html index.htm;
  8. }
  9. location /prod-api/{
  10. proxy_set_header Host $http_host;
  11. proxy_set_header X-Real-IP $remote_addr;
  12. proxy_set_header REMOTE-HOST $remote_addr;
  13. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  14. proxy_pass http://10.191.56.159:32153/;
  15. }
  16. error_page 500 502 503 504 /50x.html;
  17. location = /50x.html {
  18. root html;
  19. }
  20. }

编写Dockerfile文件

  1. FROM nginx:1.17.1
  2. COPY dist/ /usr/share/nginx/html/
  3. COPY nginx/default.conf /etc/nginx/conf.d/default.conf

制作镜像

  1. $ docker build -t demo-web:v1 .
  2. docker buildx build --push --tag 0xa0000/buildx-example:latest --platform linux/amd64,linux/arm64 .

推送镜像至镜像仓库

  1. $ sudo docker login --username=tb19388438 registry.cn-hangzhou.aliyuncs.com
  2. $ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xcrj/light:[镜像版本号]
  3. $ sudo docker push registry.cn-hangzhou.aliyuncs.com/xcrj/light:[镜像版本号]

FAQ:如何自动化构建前端代码?

SpringBoot应用镜像化中,我们通过maven插件docker-maven-plugin在打包Jar时自动构建、发布了docker镜像,而在本文中确是手动编译、构建、发布,这样就造成了docker镜像的名称、版本号无法统一管理。这时我们就需要引入前端构建的工具 gruntjs

创建容器并启动

  1. $ docker run --name demo-web -p 80:80 demo-web:v1

使用DockerCompose部署应用

  1. version: '3'
  2. services:
  3. light-fast-front-end:
  4. build:
  5. context: .
  6. dockerfile: Dockerfile
  7. image: xcrj/front-end:1.0.0
  8. container_name: light-fast-front-end
  9. restart: always
  10. volumes:
  11. - ./docker/etc/nginx/:/etc/nginx/conf.d/
  12. ports:
  13. - "80:80"