![](/img/trans.png)
[英]How to update the Docker image of running AWS ECS FARGATE task definition
[英]how to create a docker image and update task definition in ecs with it using wercker
我正在使用phusion / baseimage並在wercker.yml文件的'build'管道中對其進行更新,但是在'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'為基礎的docker映像並更新我的注冊表,然后自動執行ecs任務定義更新並運行任務。
似乎您缺少docker和wercker的專業知識。 Wercker主要用作持續集成服務器,因此負責編譯,執行測試和部署成功的構建。 它不像您嘗試的那樣用於准備基礎圖像。
現在,docker僅用於此目的。 因此,您只需要創建自己的docker映像即可。 創建基於phusion/baseimage
並安裝所有缺少的層(nginx,telnet等)。 對准備好的映像滿意后,可以將其推送到Dockerhub
或任何其他Dockerhub
存儲庫。 然后,您將告訴wercker在構建階段使用自己的映像。
另一個重要的信息-Wercker將使用您提供給他的所有步驟,但不會推入已創建的構建框,因為它被認為是骯臟的。 相反,它將采用$ WERCKER_SOURCE_DIR文件夾中的任何內容。 因此您在構建過程中創建的任何其他內容都將不包括在內。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.