Issue with fetching http://deb.debian.org/debian/dists/jessie-updates/InRelease with docker

Im trying to run the command docker-compose build

I get this output:

Step 4/8 : RUN apt-get update && apt-get install -y google-chrome-stable
 ---> Running in ee9551cd38b9
Ign http://dl.google.com stable InRelease

Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]

.....

Get:9 http://deb.debian.org jessie/main amd64 Packages [9098 kB]

W: Fetched 10.1 MB in 6s (1519 kB/s)
Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease  Unable to find expected entry 'main/binary-amd64/Packages' in Release file (Wrong sources.list entry or malformed file)

E: Some index files failed to download. They have been ignored, or old ones used instead.
ERROR: Service 'webpack' failed to build: The command '/bin/sh -c apt-get update && apt-get install -y google-chrome-stable' returned a non-zero code: 100

Anyone who has an idea?


Solution 1:

I ran into this problem too this morning. I was able to solve it by combining advice from the following two tickets:

How to solve 404 Error in AWS apg-get for debian jessie fetch?

https://stackoverflow.com/questions/46406847/docker-how-to-add-backports-to-sources-list-via-dockerfile

The solution:

In your Dockerfile, before running any apt commands, add the following line:

RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list

This enables apt to run from the new sources.

It's possible the debian:jesse Docker image will be updated to work correctly in the near future, but until then this will allow you to keep working

Solution 2:

The debian team has fixed it. Pulling the image again so that it gets updated fixed it for me:

docker pull debian:jessie

Warning from the linked ticket:

Also, please migrate off Jessie ASAP -- the clock is ticking!!

Solution 3:

My solution

Quick workaround

Overwritting sources.list is not what I want:

sed '/jessie-updates/s/^/# /' -i /etc/apt/sources.list

will just comment lines containing jessie-updates and keep everything else!

deb http://ftp.ch.debian.org/debian/ jessie main contrib
deb-src http://ftp.ch.debian.org/debian/ jessie main contrib

deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib

# # jessie-updates, previously known as 'volatile'
# deb http://ftp.ch.debian.org/debian/ jessie-updates main contrib
# deb-src http://ftp.ch.debian.org/debian/ jessie-updates main contrib

So I continue to use local mirrors while Debian jessie stay supported.

Upgrade to stretch

Then for upgrading to stretch, I just

sed 's/jessie/stretch/' -i.jessie /etc/apt/sources.list

This will create a source.list.jessie

then I can uncomment stretch-updates lines:

sed '/stretch-updates/s/^# //' -i /etc/apt/sources.list

Solution 4:

The better solution would be to use build-pack images in your docker containers for jessie so you can do something like :

FROM buildpack-deps:jessie

You can get them here