# #docker #google-cloud-sdk
Вопрос:
Наш файл Dockerfile содержит следующие строки:
# Installing google cloud SDK for gsutil
RUN apt-get update amp;amp;
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list amp;amp;
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - amp;amp;
apt-get update -y amp;amp;
apt-get install google-cloud-sdk -y
Когда мы запускаем контейнер docker локально с этого изображения и docker exec -it containerID bash
помещаем его в контейнер, мы получаем:
airflow@containerID:~$ gsutil --version
gsutil version: 4.65
Когда мы запускаем контейнер docker в нашем вычислительном механизме GCP из этого изображения и docker exec -it containerID bash
помещаем его в контейнер, мы получаем:
airflow@containerID:~$ gsutil --version
bash: gsutil: command not found
Я думал, что весь смысл docker и dockerfiles заключался в том, чтобы мы могли избежать этой точной проблемы, связанной с тем, что что-то работает локально, но не в производстве… Мы в недоумении, как вообще это отладить?
Комментарии:
1. Всем привет! [qq] Вы уверены, что оба контейнера используют одно и то же изображение с одним и тем же хэшем? Вы совершенно правы, идея использования Docker состоит в том, чтобы избежать подобной ситуации, поэтому я думаю, что проблема может быть в изображении, которое, возможно, немного отличается. Я никогда раньше не сталкивался с подобной проблемой.
2. Восстановление изображения, похоже, сделало свое дело. Я не часто меняю этот файл dockerfile — возможно, он был изменен несколько недель назад, перестроен локально, но не перестроен на prod
3. Не могли бы вы дать подробный ответ о том, как вы решили эту проблему?
4. я побежал
docker-compose build
перестраивать изображение докера.