我想创建一个docker镜像,将其作为容器启动(配置数据库凭据等),提交这些更改,标记它并将其推送到容器注册表:
ALTER TABLE user
ADD CONSTRAINT fk_user_1
FOREIGN KEY (id_user)
REFERENCES doctor (id_user)
ON DELETE CASCADE
ON UPDATE NO ACTION;
我不明白为什么但是尽管from .gitlab-ci.yml:
configure_db_image:
stage: docker_build
tags:
- docker-in-docker
script:
- docker login <gitlab-CI-CR> -u gitlab-ci-token -p $CI_JOB_TOKEN
- docker pull <gitlab-CI-CR>/db-template/db-template-image:latest
- docker tag <gitlab-CI-CR>/db-template/db-template-image:latest <gitlab-CI-CR>/my-project/my-repo/test-db-image:latest
# Remove the container if it exists already
- docker rm -f test-db-image-container || true
- docker create -i -p 5432:5432 --name test-db-image-container --env 'CREATE_ONLY_ON_FIRST_RUN=yes' --env 'DB_USER=user' --env 'DB_PASS=pass' --env 'DB_NAME=dbname' <gitlab-CI-CR>/my-project/my-repo/test-db-image:latest
- docker start -i test-db-image-container
- docker stop test-db-image-container
- docker commit test-db-image-container test-db-image
- docker tag test-db-image <gitlab-CI-CR>/my-project/my-repo/test-db-image:latest
- docker push <gitlab-CI-CR>/my-project/my-repo/test-db-image:latest
我没有配置从注册表中提取的图像。我哪里错了?
答案 0 :(得分:0)
这与所描述的一样 - 问题在于父映像中的Dockerfile,它声明了数据库更改在文件系统中作为Docker卷发生的路径。因此,当图像被推送到注册表时,它们不会持续存在。