The phrase should be "English teacher" with a capital "E" as the term "English" here refers to a language of national origin/affiliation. The names of languages are, as a rule, capitalized as in the case of French, German, Japanese, etc.
If the teacher happened to be from England, we would also capitalize the word "English" in the phrase "English teacher" even if that teacher taught French or geometry, as the term "English" would then be referring to nationality, another capitalized category in the language conventions of English.
There is a version of the word "English" that is not apparently directly related to the language or the people of England, but this term too is often capitalized. This version of the word refers to spin or applying spin to an object. Used in the parlance of games like billiards (and pool too) and bowling, "English" describes the "side-spin" on the ball that causes a curvature of the ball's path. This version of the word is sometimes written without a capital "e" but often appears with the capital too.
Thus using a capital "E" on all version of the term "English" will put you in safe territory.
I would say that the answer is that "English" in the noun is capitalized. It should be capitalized because it references a nation. "English" came from "England." The word is derived from a proper noun, therefore it is to be capitalized. One does not have to capitalize biology because it does not come from "biology land." Yet, "English" should be capitalized because it comes from a derivation that is a proper noun. In my mind, I would call it that "English teacher" is capitalized for this reason. It is tricky because the tendency is to either overcapitalize everything or under-capitalize everything. I think that the standard becomes if there is a strong reference to a proper noun classification. This becomes the defining point, in my mind.
It should be English... i think