我正在尝试学习如何创建.gitlab-ci.yml
,并且确实在努力寻找可以帮助我的资源。我正在使用dind创建一个docker镜像以推送到docker hub,然后尝试登录到我的还安装了docker的AWS EC2实例,以拉出镜像并开始运行。
我已经成功地使用GitLab构建了映像并将其推送到docker hub,但是现在我遇到了尝试登录EC2实例以提取映像的问题。
我的第一次天真尝试是这样的:
#.gitlab-ci.yml
image: docker:18.09.7
variables:
DOCKER_REPO: myrepo
IMAGE_BASE_NAME: my-image-name
IMAGE: $DOCKER_REPO/$IMAGE_BASE_NAME:$CI_COMMIT_REF_SLUG
CONTAINER_NAME: my-container-name
services:
- docker:18.09.7-dind
before_script:
- docker login -u "$DOCKER_REGISTRY_USER" -p "$DOCKER_REGISTRY_PASSWORD"
after_script:
- docker logout
stages:
- build
- deploy
build:
stage: build
script:
- docker build . -t $IMAGE -f $PWD/staging.Dockerfile
- docker push $IMAGE
deploy:
stage: deploy
variables:
RELEASE_IMAGE: $DOCKER_REPO/$IMAGE_BASE_NAME:latest
script:
- docker pull $IMAGE
- docker tag $IMAGE $IMAGE
- docker push $IMAGE
- docker tag $IMAGE $RELEASE_IMAGE
- docker push $RELEASE_IMAGE
# So far so good - this is where it starts to go pear-shaped
- apt-get install sudo -y
- sudo apt install openssh-server -y
- ssh -i $AWS_KEY $AWS_URL "docker pull $RELEASE_IMAGE"
- ssh -i $AWS_KEY $AWS_URL "docker rm --force $CONTAINER_NAME"
- ssh -i $AWS_KEY $AWS_URL "docker run -p 3001:3001 -p 3002:3002 -w "/var/www/api" --name ${CONTAINER_NAME} ${IMAGE}"
看来,无论基于docker镜像的操作系统是什么,都没有安装apt-get
,ssh
和其他有用的命令。我收到以下错误:
/ bin / sh:评估:第114行:apt-get:找不到
有人可以使用我的docker:dind映像来帮助我登录EC2实例并在gitlab-ci.yml
中拉并运行映像吗? Docker映像建立在哪个操作系统上?
答案 0 :(得分:1)
official Docker image基于使用Alpine Linux的apk
package manager。
尝试将const loadOptions = {
keepCurrentModels: true,
preserveView: true
}
viewer.loadDocumentNode(doc, viewable, loadOptions)
命令替换为以下命令:
apt-get
无需安装 - apk add openssh-client
,只需安装sudo
,就可以删除该步骤。