Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

509
Views
Implemente el contenedor docker desde un registro externo a Heroku

Tengo un repositorio de proyectos alojado en gitlab. Estoy usando gitlab-ci para construir un contenedor docker desde mi proyecto. Lo que me gustaría lograr es implementar ese contenedor en heroku.

Estaba tratando de seguir la solución de esta pregunta: Cómo construir, probar e implementar usando Jhipster, Docker, Gitlab y Heroku

Así es como se ve mi .gitlab-ci.yaml :

 stages: - build - package - deploy build_npm: image: node:latest stage: build script: - npm install - npm run build:prod artifacts: paths: - dist/ build_image: image: docker:latest services: - docker:dind stage: package script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com - docker build -t registry.gitlab.com/maciejsobala/myApp . - docker push registry.gitlab.com/maciejsobala/myApp:latest deploy_to_heroku: stage: deploy services: - docker:dind script: - gem install dpl - docker run registry.gitlab.com/maciejsobala/myApp:latest - dpl --provider=heroku --app= myApp --api-key=$HEROKU_API_KEY

Lo que estoy tratando de lograr es tener 3 etapas:

  • build: en este momento, compile solo el proyecto npm (en el futuro, quiero agregar un jar aquí)
  • paquete: crear y enviar a la imagen de la ventana acoplable del registro.
  • desplegar: instalar la imagen de la ventana acoplable en heroku.

Tengo problemas con la última etapa ( deploy ). Para ser honesto, no estoy muy seguro de lo que se debe hacer aquí.

Traté de usar dpl, con respecto a este tutorial: https://docs.gitlab.com/ce/ci/examples/test-and-deploy-ruby-application-to-heroku.html

Desafortunadamente, tengo problemas al intentar ejecutar la imagen de la ventana acoplable

 $ docker run registry.gitlab.com/maciejsobala/myApp:latest /bin/bash: line 49: docker: command not found

Estoy completamente ciego aquí. Realmente agradecería cualquier solución, enlaces a artículos/tutoriales, etc.

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Está iniciando la aplicación por alguna razón (usando docker run ) que quizás no necesite. La herramienta dpl está diseñada para usarse dentro de una base de código, en lugar de para la implementación de imágenes. Como dijiste

 build_image: image: docker:latest services: - docker:dind stage: package script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com - docker build -t registry.gitlab.com/maciejsobala/myApp . - docker push registry.gitlab.com/maciejsobala/myApp:latest

está funcionando, lo que significa que su corredor puede ejecutar la ventana acoplable en la ventana acoplable y empujar imágenes con éxito. Para la implementación de heroku, solo debe insertar esa imagen en el registro docker de heroku, de acuerdo con la documentación oficial de heroku . En resumen, haces un

 deploy_to_heroku: stage: deploy services: - docker:dind script: - docker login --email=_ --username=_ --password=<YOUR-HEROKU-AUTH-TOKEN> registry.heroku.com - docker tag registry.gitlab.com/maciejsobala/myApp:latest registry.heroku.com/maciejsobala/myApp:latest - docker push registry.heroku.com/maciejsobala/myApp:latest

con su token de autenticación de heroku, que puede obtener con heroku auth:token

Como se dice en la documentación, presionar el registro de herokus desencadena un proceso de lanzamiento de la aplicación.

about 4 years ago · Santiago Trujillo Report

0

La razón por

"No existe tal imagen: registration.gitlab.com/username/image:tag"

el error es que la fuente de la etiqueta debe extraerse de antemano. El bloque de secuencias de comandos debe incluir una declaración de extracción de la docker pull . El bloque de script general debe ser el siguiente:

 script: - docker login --email=_ --username=_ --password=<YOUR-HEROKU-AUTH-TOKEN> registry.heroku.com - docker pull registry.gitlab.com/maciejsobala/myApp:latest - docker tag registry.gitlab.com/maciejsobala/myApp:latest registry.heroku.com/maciejsobala/myApp:latest - docker push registry.heroku.com/maciejsobala/myApp:latest

Todavía esto no es suficiente. Heroku cambió su política de lanzamiento para que la inserción en Heroku Container Registry ya no active un lanzamiento. Aquí está el comando adicional para cumplir con la tarea de liberación faltante:

 - docker run --rm -e HEROKU_API_KEY=<YOUR-HEROKU-AUTH-TOKEN> wingrunr21/alpine-heroku-cli container:release web --app myApp
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!