Ниже приведены подробные инструкции и пример кода для каждого шага:
Создайте простое приложение Spring Boot, например Hello World REST API.
// HelloWorldController.java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class HelloWorldController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
Создать в корневом каталоге проекта.gitlab-ci.yml
документ。
stages:
- test
- build
- deploy
variables:
DOCKER_IMAGE_NAME: registry.example.com/my-spring-boot-app
TAG: $CI_COMMIT_SHORT_SHA
test:
stage: test
script:
- ./mvnw test
build:
stage: build
script:
- ./mvnw clean package
- docker build -t $DOCKER_IMAGE_NAME:$TAG .
deploy:
stage: deploy
script:
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
- docker push $DOCKER_IMAGE_NAME:$TAG
Создайте Dockerfile в корневом каталоге проекта.
# Dockerfile
FROM adoptopenjdk:11-jre-hotspot
WORKDIR /app
COPY target/my-spring-boot-app.jar .
CMD ["java", "-jar", "my-spring-boot-app.jar"]
Отправьте код в репозиторий GitLab и убедитесь, что Spring Bootприложение、.gitlab-ci.yml
иDockerfileвключено в подачу。
git add .
git commit -m "Initial commit"
git push origin master
Всякий раз, когда код отправляется в репозиторий GitLab, автоматически запускается конвейер GitLab CI/CD. Он запускает тесты и создает образы Docker.
Созданный образ Docker будет отправлен в указанный Docker. Registry,Обязательно.gitlab-ci.yml
документ中设置了正确的CI_REGISTRY_USER、CI_REGISTRY_PASSWORD и CI_REGISTRY.
Использование Докера Compose или другие инструменты оркестровки контейнеров будут использовать Spring. Bootприложение部署到目标环境中。Используется следующееdocker-compose.yml
документ进行部署的示例。
version: '3'
services:
web:
image: registry.example.com/my-spring-boot-app:latest
ports:
- "8080:8080"
depends_on:
- database
database:
image: mysql:5.7
environment:
MYSQL_DATABASE: mydatabase
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USERNAME: dbuser
MYSQL_PASSWORD: dbpassword
ports:
- "3306:3306"
В приведенном выше файле docker-compose.yml есть две службы: веб-служба и база данных. Веб-сервис использует созданный вами Spring. Bootприложение的Dockerзеркало,и сопоставьте его с портом хоста 8080. Служба базы данных использует образ Docker MySQL.,и установите некоторые переменные среды для настройки базы данных。и убедитесь$TAG
Создан для вас раньшеDockerзеркало的标签。
Поместите указанный выше файл docker-compose.yml в корневой каталог проекта.
Запустите следующую команду в корневом каталоге проекта, чтобы запустить службу:
docker-compose up -d
Это запустит веб-службы и службы базы данных и сопоставит их с портами хоста 8080 и 3306 соответственно.
Тогда посетитеhttp://localhost:8080/api/hello
验证приложение是否成功部署。
Чтобы остановить службу, выполните следующую команду:
docker-compose down