简体   繁体   中英

Trying to install selenium python3 package on docker image

I've tried unsuccessfully to re-build a docker image with selenium python package on it. I'm not sure how to proceed.

Here's my dockerfile:

FROM selenium/standalone-chrome:latest
WORKDIR /usr/local/bin
RUN sudo apt-get update
RUN sudo apt-get install software-properties-common
RUN sudo apt-add-repository universe
RUN sudo apt-get install python-pip
RUN pip3 install -r requirements.txt
RUN pip3 install .
RUN pip3 install -e .
COPY ./* ./

I'm fairly sure it's my dockerfile that's wrong, but after trying various methods of installing pip I'm drawing a blank.

In any case I'm then calling: docker build -t webdriver .

Which outputs the following:

Sending build context to Docker daemon  4.608kB
Step 1/10 : FROM selenium/standalone-chrome:latest
 ---> 11258d1f9aba
Step 2/10 : WORKDIR /usr/local/bin
 ---> Using cache
 ---> 9297517083f6
Step 3/10 : RUN sudo apt-get update
 ---> Using cache
 ---> f9004a85fc1a
Step 4/10 : RUN sudo apt-get install software-properties-common
 ---> Running in bb2336c4ae46
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  apt-utils cron gir1.2-glib-2.0 iso-codes libapt-inst2.0 libcurl3-gnutls
  libgirepository-1.0-1 librtmp1 python-apt-common python3-apt python3-dbus
  python3-gi python3-pycurl python3-software-properties unattended-upgrades
  xz-utils
Suggested packages:
  anacron logrotate checksecurity exim4 | postfix | mail-transport-agent
  isoquery python3-apt-dbg python-apt-doc python-dbus-doc python3-dbus-dbg
  libcurl4-gnutls-dev python-pycurl-doc python3-pycurl-dbg bsd-mailx
  mail-transport-agent
The following NEW packages will be installed:
  apt-utils cron gir1.2-glib-2.0 iso-codes libapt-inst2.0 libcurl3-gnutls
  libgirepository-1.0-1 librtmp1 python-apt-common python3-apt python3-dbus
  python3-gi python3-pycurl python3-software-properties
  software-properties-common unattended-upgrades xz-utils
0 upgraded, 17 newly installed, 0 to remove and 5 not upgraded.
Need to get 3615 kB of archives.
After this operation, 22.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] Abort.
The command '/bin/sh -c sudo apt-get install software-properties-common' returned a non-zero code: 1

I'm guessing that "Do you want to continue? [Y/n] Abort." needs to be answered "Y", but I don't know how to do this. I suspect I'm missing more though.

Needless to say my python script still doesn't run as it needs selenium:

Traceback (most recent call last):
  File "web-test.py", line 3, in <module>
    from selenium import webdriver

Can anyone tell me where I've gone wrong?

You have identified the error correctly. You need to answer the question: Do you want to continue? [Y/n] Do you want to continue? [Y/n] with Y and continue. So, change your docker file as follows and add the flag -y

FROM selenium/standalone-chrome:latest
WORKDIR /usr/local/bin
RUN sudo apt-get -y update
RUN sudo apt-get install -y software-properties-common
RUN sudo apt-add-repository -y universe
RUN sudo apt-get install -y python3-pip
RUN pip3 install -r requirements.txt
RUN pip3 install .
RUN pip3 install -e .
COPY ./* ./

The -y flag can be used to assume YES for all apt installs. You need to add the -y flag, because docker build command cannot be run in an interactive mode. Hence, all interactions in the build process have to be added in the Dockerfile . ( Read this answer )

Since you are gonna use pip3 you need to install it correctly. You are trying to install pip2 . I have updated the your docker file accordingly. You need to use the below command to install pip3.

RUN sudo apt-get install -y python3-pip

There are couple of things in your Dockerfile:

  • Avoid installing or using sudo as it has unpredictable TTY and signal-forwarding behavior that can cause problems. You can refer to Dockerfile Best Practice
RUN sudo apt-get update
RUN sudo apt-get install software-properties-common
RUN sudo apt-add-repository universe
RUN sudo apt-get install python-pip
  • The message
Need to get 3615 kB of archives.
After this operation, 22.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] Abort.
The command '/bin/sh -c sudo apt-get install software-properties-common' returned a non-zero code: 1

You need to add the flag -y to your Docker command above, so that during the Docker building, it can automatically say Yes for you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM