Как создать образ докера и обновить определение задачи в ecs с помощью wercker

Я беру phusion/baseimage и обновляю его в конвейере 'build' в файле wercker.yml, но изображение, помещаемое в мой реестр в конвейере 'deploy', похоже, не является обновленной версией 'phusion/baseimage', т.е. Я устанавливаю Java, nginx и т. д., но образ conatiner не имеет того же самого. Пожалуйста помоги! Я запутался, когда пропускаю шаг. Вот мой wercker.yml:

>

     box: phusion/baseimage no-response-timeout: 15
    > 
    > build:
    >     steps:
    >       - script:
    >           name: Install packages
    >           code: |
    >             apt-get update && apt-get upgrade -y
    >             echo "install unzip"  
    >             apt-get install unzip -y
    >             echo "install nginx"
    >             apt-get install nginx -y
    >             apt-get install telnet -y
    >             service nginx stop
    >             apt-get install python2.7 -y
    >             apt-get install python-pip -y
    >             pip install awscli
    >       - script:
    >           name: Oracal Java Installation
    >           code: |
    >             apt-get install software-properties-common -y
    >             add-apt-repository ppa:webupd8team/java -y
    >             apt-get update
    >             echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
    >             apt-get install oracle-java8-installer -y
    >       - script:
    >           name: Jetty Installation
    >           code: |
    >             groupadd -r jetty && useradd -r -g jetty jetty
    >             JETTY_HOME=/usr/local/jetty
    >             PATH=$JETTY_HOME/bin:$PATH
    >             mkdir -p "$JETTY_HOME"
    >             cd /usr/local/jetty
    >             gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B59B67FD7904984367F931800818D9D68FB67BAC
    >             gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 5DE533CB43DAF8BC3E372283E7AE839CD7C58886
    >             curl -SL <jetty.tar.gz>
    > -o jetty.tar.gz
    >             curl -SL <jetty.tar.gz>
    > -o jetty.tar.gz.asc
    >             gpg --verify jetty.tar.gz.asc
    >             tar -xvf jetty.tar.gz --strip-components=1
    >             sed -i '/jetty-logging/d' etc/jetty.conf
    >             rm -fr demo-base javadoc
    >             rm jetty.tar.gz*
    >       - script: 
    >          name: Jetty Configuration
    >          code: |
    >            JETTY_BASE=/var/lib/jetty
    >            mkdir -p "$JETTY_BASE"
    >            cd /var/lib/jetty
    >            modules="$(grep -- ^--module= "$JETTY_HOME/start.ini" | cut -d= -f2 | paste -d, -s)"
    >            java -jar "$JETTY_HOME/start.jar" --add-to-startd="$modules,setuid"
    >       - script:
    >          name: Jetty RUN
    >          code: |
    >            JETTY_RUN=/run/jetty
    >            JETTY_STATE=$JETTY_RUN/jetty.state
    >            TMPDIR=/tmp/jetty
    >            mkdir -p "$JETTY_RUN" "$TMPDIR"
    >            chown -R jetty:jetty "$JETTY_RUN" "$TMPDIR" "$JETTY_BASE"
    >            mkdir /etc/service/jetty
    >            cp -r start_jetty.sh /etc/service/jetty/run
    >            chmod a+x /etc/service/jetty/run deploy:   box: python:2.7-slim   dockerhub:
    >   - pip-install
    >   - internal/docker-push:
    >       username: $USERNAME
    >       password: $PASSWORD
    >       tag: latest
    >       repository: shantanup/wercker
    >       registry: https://registry.hub.docker.com   aws-ecs:
    >   - script:
    >       name: copy
    >       code: mkdir /app && cp wercker-app.json /app/
    >   - tonnu/aws-ecs:
    >       key: $AWS_ACCESS_KEY
    >       secret: $AWS_SECRET_KEY
    >       region: us-east-1
    >       cluster-name: wrecker-cluster
    >       service-name: wercker
    >       task-definition-name: wercker-task
    >       task-definition-file: /app/wercker-app.json
    >       minimum-running-tasks: 1

Мой сценарий прост: мне нужно создать образ докера с 'phusion/baseimage' в качестве базы и обновить мой реестр, а затем автоматизировать обновление определения задачи ecs и запустить задачу.

1 ответ

Кажется, вам не хватает доку и веркера ноу-хау. Wercker в основном используется в качестве сервера непрерывной интеграции, поэтому отвечает за компиляцию, выполнение тестов и развертывание успешных сборок. Он не используется для подготовки базового изображения, как вы пытаетесь сделать.
Теперь докер, с другой стороны, используется только для этого. Так что вам просто нужно создать собственный образ докера. Создайте Dockerfile, основанный на phusion/baseimage и установите все недостающие слои (nginx, telnet и т. д.). Как только вы будете довольны подготовленным вами изображением, вы можете Dockerhub или любое другое хранилище докеров. Тогда вы скажете wercker использовать ваш собственный образ для фазы сборки.

Еще один ключевой элемент информации - wercker будет использовать все шаги, которые вы ему дадите, но не будет выдвигать созданный блок сборки, так как он считается грязным. вместо этого он возьмет все, что находится в папке $WERCKER_SOURCE_DIR. поэтому все, что вы создали во время сборки, не будет включено.

Другие вопросы по тегам