项目作者: kenalib

项目描述 :
Image Search Java API demo
高级语言: HTML
项目地址: git://github.com/kenalib/image-search-java.git
创建时间: 2018-05-15T05:51:53Z
项目社区:https://github.com/kenalib/image-search-java

开源协议:MIT License

下载


Image Search Java Sample Web API

CircleCI Status:
CircleCI

Sample UI and code

Development

Prepare image search environment variables

  1. export ACCESS_KEY_ID=XXXXXXXXXXXXXXXX
  2. export ACCESS_KEY_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • update INSTANCE_NAME in src/main/resources/image-search.properties
  • (optional) update CORS_URL (default is *)

Prepare images

  • c.f. https://www.alibabacloud.com/help/doc-detail/66580.htm
  • upload your image files and increment.meta on your OSS bucket
  • setup RAM role and copy ARN in the ImageSearchOSSAccessRole
  • open Image Search instance and import the images from OSS
  • if needed, select Reset before OSS import to clear existing data
  • click manage to check OSS Import status to be Imported

Test and build

  1. mvn test
  2. # this will create target/image-search-webapp.war
  3. mvn package
  4. # this will skip test
  5. mvn package -DskipTests

Run Tomcat locally

  1. mvn tomcat7:run
  2. # GET returns default result
  3. curl http://localhost:8080/image-search-webapp/search_picture | python -m json.tool
  4. # POST from form
  5. open http://localhost:8080/image-search-webapp/check.html

Run Tomcat by Docker

  1. # Test
  2. docker-compose -f docker-compose.test.yml run web mvn test
  1. docker-compose up -d
  2. docker-compose ps
  3. docker-compose logs -f web
  4. open http://localhost/image-search-webapp/search_picture
  5. open http://localhost/image-search-webapp/check.html
  6. # go into container for debug
  7. docker exec -it image-search-webapp bash
  • Dockerfile を編集した後は docker-compose up -d --build

Stop Tomcat by Docker

  1. docker-compose stop
  2. docker-compose down # stop and remove
  3. docker-compose ps

Deploy

Quick deploy using docker machine

Create docker machine

  1. # this will create ~/go/bin/docker-machine-driver-aliyunecs
  2. go get -u github.com/AliyunContainerService/docker-machine-driver-aliyunecs
  3. export ECS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXX
  4. export ECS_ACCESS_KEY_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  5. export ECS_REGION=ap-southeast-1
  6. docker-machine create --driver aliyunecs image-search-webapp
  7. docker-machine ls
  8. # you should see a new virtual machine
  • in case failed, try docker-machine rm -f image-search-webapp

Run Tomcat on remote Docker

  1. eval $(docker-machine env image-search-webapp)
  2. docker-compose up -d
  3. docker-compose ps
  4. docker-compose logs -f web
  5. IP=$(docker-machine ip image-search-webapp)
  6. curl http://${IP}/image-search-webapp/search_picture | python -m json.tool
  7. open http://${IP}/image-search-webapp/check.html
  8. # ssh to the machine for debug
  9. docker-machine ssh image-search-webapp
  10. # go into container for debug
  11. docker exec -it image-search-webapp bash

Auto deploy using CircleCI

Setup CircleCI 2.0 and docker-compose

  • Test build deploy processes are automated on CircleCI 2.0
  • see .circleci/config.yml for auto deploy using docker-compose
  • need following environment variables in CircleCI settings
  1. # for image search
  2. ACCESS_KEY_ID
  3. ACCESS_KEY_SECRET
  4. # c.f. docker-machine env image-search-webapp
  5. DOCKER_TLS_VERIFY=1
  6. DOCKER_CERT_PATH=.
  7. DOCKER_HOST
  8. # .pem files content
  9. DOCKER_CA_PEM
  10. DOCKER_CERT_PEM
  11. DOCKER_KEY_PEM
  • run docker-machine env image-search-webapp to show actual variables.
  • for each PEM files, you can copy data to clipboard by below on Mac.
  • paste to Value field then delete header and footer in the field.
  1. cat ~/.docker/machine/machines/image-search-webapp/ca.pem | pbcopy

Clean up

  1. docker-compose stop
  2. docker-compose down
  3. eval $(docker-machine env -u)
  4. docker-machine stop image-search-webapp
  5. docker-machine rm image-search-webapp

Misc Note

Maven project from scratch

  • IntelliJ IDEA インストール https://www.jetbrains.com/idea/download/
  • Maven | Create from archetype にチェック | maven-archetype-webapp
  • Run | Edit Configurations | + Maven をクリック | Runner タブで環境変数を設定可能

Install specific version of Docker

  1. docker-machine ssh image-search-webapp
  2. apt-get update
  3. lsb_release -a
  4. apt list --installed | grep docker
  5. apt-cache madison docker-ce
  6. apt-get install docker-ce=18.03.1~ce-0~ubuntu

Reference