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