【问题标题】:how to create a docker image and update task definition in ecs with it using wercker如何使用 wercker 在 ecs 中创建 docker 映像并更新任务定义
【发布时间】:2016-01-14 21:47:50
【问题描述】:

我正在获取 phusion/baseimage 并在 wercker.yml 文件的“构建”管道中对其进行更新,但在“部署”管道中推送到我的注册表的图像似乎不是“phusion/baseimage”的更新版本',我正在安装 Java、nginx 等,但容器图像没有相同的。 请帮忙!我很困惑,因为我错过了一步。 这是我的 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”为基础的 docker 镜像并更新我的注册表,然后自动更新 ecs 任务定义并运行该任务。

【问题讨论】:

    标签: amazon-web-services docker wercker amazon-ecs


    【解决方案1】:

    您似乎缺少一些 docker 和 wercker 的专业知识。 Wercker 主要用作持续集成服务器,因此负责编译、执行测试和部署成功的构建。它不用于像您尝试做的那样准备基础映像。
    另一方面,现在 docker 仅用于此目的。所以你只需要创建一个你自己的 docker 镜像。创建一个基于phusion/baseimage 的 Dockerfile 并安装所有缺少的层(nginx、telnet 等)。对准备好的映像感到满意后,可以将其推送到 Dockerhub 或任何其他 docker 存储库。然后你会告诉 wercker 在构建阶段使用你自己的镜像。

    另一个关键信息 - wercker 将使用您提供给他的所有步骤,但不会推送创建的构建框,因为它被认为是脏的。相反,它将占用 $WERCKER_SOURCE_DIR 文件夹中的任何内容。因此您在构建期间创建的任何其他内容都不会包含在内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-22
      • 2020-10-04
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 2019-05-18
      相关资源
      最近更新 更多