docker-compose construye el proyecto Springboot

docker-compose construye el proyecto Springboot

Proyecto Springboot

Información de configuración

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true

La función principal

Cuente el número de visitas de clientes

@RestController
public class VisitorController {
    
    

    @Autowired
    private VisitorRepository repository;
	
    @RequestMapping("/")
    public String index(HttpServletRequest request) {
    
    
        String ip=request.getRemoteAddr();
        Visitor visitor=repository.findByIp(ip);
        if(visitor==null){
    
    
            visitor=new Visitor();
            visitor.setIp(ip);
            visitor.setTimes(1);
        }else {
    
    
            visitor.setTimes(visitor.getTimes()+1);
        }
        repository.save(visitor);
        return "我的IP "+visitor.getIp()+" 已经被访问了"+visitor.getTimes()+" 次了.";
    }
}

Dockerfile

FROM maven:3.5-jdk-8
COPY ./settings.xml /usr/share/maven/ref/

Proyecto Springboot usando compilación maven, proceso de compilación porque el valor predeterminado se descarga de los paquetes jar de la red externa, de acuerdo con el sitio web oficial de explicación , archivo de imagen de fuente doméstica custom setting.xml en el directorio donde Dockerfile y Dockerfile contienen contenido más COPY ./settings. xml / usr / share / maven / ref / está bien.

Settings.xml referencia de configuración estación espejo de código abierto de Alibaba

Mysql

Utilice mysql / mysql-server: 5.7

Contenedor web (Nginx)

Utilice nginx: 1,13

Información de configuración

server {
    
    
    listen 80;
    charset utf-8;
    access_log off;

    location / {
    
    
        proxy_pass http://app:8080;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /static {
    
    
        access_log   off;
        expires      30d;

        alias /app/static;
    }
}

La comunicación del servicio en un grupo de compose necesita usar el nombre de los servicios para acceder

docker-compose.yml

version: '3'
services:
  nginx:
   container_name: v-nginx
   image: nginx:1.13
   restart: always
   ports:
   - 80:80
   - 443:443
   volumes:
   - ./nginx/conf.d:/etc/nginx/conf.d
    
  mysql:
   container_name: v-mysql
   image: mysql/mysql-server:5.7
   environment:
    MYSQL_DATABASE: test
    MYSQL_ROOT_PASSWORD: root
    MYSQL_ROOT_HOST: '%'
   ports:
   - "3306:3306"
   restart: always
    
  app:
    restart: always
    build: ./app
    working_dir: /app
    volumes:
      - ./app:/app
      - ~/.m2:/root/.m2
    expose:
      - "8080"
    depends_on:
      - nginx
      - mysql
    command: mvn clean spring-boot:run -Dspring-boot.run.profiles=docker
  • puertos: utilice puertos de host para asignar puertos de contenedores
  • exponer: exponer el puerto
  • reiniciar: siempre significa que si el servicio se inicia sin éxito, siempre lo intentará (importante)
  • volúmenes: cargue el archivo de configuración en el directorio local en la dirección de destino del contenedor

Iniciar / detener el servicio y la prueba

Comienza el servicio

docker-compose up -d

prueba

Abra la página web http: // ip_addr para
acceder a la prueba

Cerrar servicio

docker-compose down

referencia

https://github.com/ityouknow/spring-boot-examples
http://www.ityouknow.com/springboot/2018/03/28/dockercompose-springboot-mysql-nginx.html

Supongo que te gusta

Origin blog.csdn.net/qq_39906884/article/details/105877233
Recomendado
Clasificación