Failing to build docker container on remote host

匆匆过客 提交于 2019-12-23 15:38:39

问题


I have a set of docker containers that are generated from yml files and work ok.

I now want to deploy them to another machine. In another post here I was advised to build the container on the remote host using one of 2 options:

  • option1 - copy the code to the remote host and apply a modified docker-compose, and build from source using a modified docker-compose

  • option2 - create an image on local machine, push it to a docker repository, pull it from there, using a modified docker-compose

I'm trying to follow option1 (as a start). I copied the code into the remote host, and modified the Dockerfile, and docker-compose.yml files (snippet1)

The build goes partway through. It downloads the python and postgres images, and starts to process the Dockerfile, but it fails to install the requirements (it fails to install the first requirement - see snippet2)

What can be the problem?

snippet1 - Dockerfile.dair, and docker-compose.yml

cat /home/ubuntu/webServer/web/Dockerfile.dair

FROM python:3.6.1
MAINTAINER User4 <user4@gmail.com>

# Create the group and user to be used in this container
RUN groupadd flaskgroup && useradd -m -g flaskgroup -s /bin/bash flask

# Create the working directory (and set it as the working directory)
RUN mkdir -p /home/flask/app/web
WORKDIR /home/flask/app/web

# Install the package dependencies (this step is separated
# from copying all the source code to avoid having to
# re-install all python packages defined in requirements2.txt
# whenever any source code change is made)
COPY requirements2.txt /home/flask/app/web
RUN pip install --no-cache-dir -r requirements2.txt

# Copy the source code into the container
COPY . /home/flask/app/web

RUN chown -R flask:flaskgroup /home/flask

USER flask

EXPOSE 8000

CMD /usr/local/bin/gunicorn -w 2 -t 3600 -b :8000 project:app

ENV PYTHONUNBUFFERED=1
ENV FLASK_APP=run.py
ENV FLASK_DEBUG=1

,

cat /home/ubuntu/construction_overlay/webServer/docker-compose.dair.yml
version: '3'

services:
  web:
    restart: always
    build:
      context: ./web
      dockerfile: Dockerfile.dair
    volumes:
      - /home/ubuntu/construction_overlay/webServer/web:/home/flask/app/web
    depends_on:
      - postgres

  nginx:
    restart: always
    build: ./nginx
    ports:
      - "80:80"
    volumes:
      - /home/ubuntu/construction_overlay/webServer/web:/home/flask/app/web
    depends_on:
      - web

  postgres:
    restart: always
    build: ./postgresql
    volumes:
      - data1:/var/lib/postgresql
    expose:
      - "5432"

volumes:
  data1:

snippet2 - the build fails to install the requirements

cat /home/ubuntu/webServer/web/requirements.txt
alembic==0.8.8
atomicwrites==1.3.0
attrs==19.1.0
...

,

docker-compose -f /home/ubuntu/webServer/docker-compose.dair.yml  up --build -d;
Building postgres
Step 1/4 : FROM postgres:11.3
 ---> 4e045cb8eecd
Step 2/4 : ENV POSTGRES_USER postgres_user
 ---> Using cache
 ---> 400023c58607
Step 3/4 : ENV POSTGRES_PASSWORD postgres_user
 ---> Using cache
 ---> 0cf91f314380
Step 4/4 : ENV POSTGRES_DB construction-overlay-db
 ---> Using cache
 ---> 151106ecf13b
Successfully built 151106ecf13b
Successfully tagged webserver_postgres:latest
Building web
Step 1/10 : FROM python:3.6.1
 ---> 955d0c3b1bb2
Step 2/10 : MAINTAINER User4 <user4@gmail.com>
 ---> Using cache
 ---> 128d55ddb4e7
Step 3/10 : RUN groupadd flaskgroup && useradd -m -g flaskgroup -s /bin/bash flask
 ---> Using cache
 ---> e2c30915fcf5
Step 4/10 : RUN mkdir -p /home/flask/app/web
 ---> Using cache
 ---> 8f44dada5953
Step 5/10 : WORKDIR /home/flask/app/web
 ---> Using cache
 ---> 04a895c3fe27
Step 6/10 : COPY requirements.txt /home/flask/app/web
 ---> Using cache
 ---> 13ab37e789f8
Step 7/10 : RUN pip install --no-cache-dir -r requirements.txt
 ---> Running in 61475950cd73
Collecting alembic==0.8.8 (from -r requirements.txt (line 1))
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f1e979262b0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /simple/alembic/

回答1:


The solution was to add a rule for UDP outbound at the cloud provider After adding this rule, the pre-requirements install ok

Egress  IPv4    UDP     1 - 65535   0.0.0.0/0 


来源:https://stackoverflow.com/questions/57660643/failing-to-build-docker-container-on-remote-host

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!