@Elgiz Abbasov Hi. Happy that you solved your issue.
To discover more pipes, visit our Bitbucket Pipes Marketplace.
Regards, Igor.
Hey Igor, just a quick question as a follow up, I am using a Dockerfile that has some packages installing using apt-get. In my BB pipelines even though I have set up Docker as my cache, it only caches the first 3 steps which are the least time consuming (env var setup) and the apt-get installs are not cached at all. Do you know how can I fix this so that I don't have to build the image from scratch in my pipeline step each time? Reading online people said Dockerfile should not contain apt-get installs (that there is a better way?) I know I can use DockerHub and update the base image everytime but I don't want to do that. Currently my pipeline takes ~10 minutes and it doesn't cache the Docker pip downloads using pipenv nor does it cache the apt-get installs. Any help would be greatly areciated
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Elgiz Abbasov Hi. Please provide us your Dockerfile so we could help you.
Regards, Igor.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Igor Stoyanov My Dockerfile:
FROM python:3.9
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV PYTHONPATH "${PYTHONPATH}:/opt/atlassian/pipelines/agent/build"
# Set work directory
WORKDIR /code
# Install dependencies
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --dev --system
RUN apt-get update && apt-get autoclean && \
apt-get install -y '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxcb-xinerama0 libxkbcommon-dev libxkbcommon-x11-dev libxkbcommon-x11-0 libdbus-1-3 xvfb
# Copy project
COPY . /code/
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Igor Stoyanov My partial bitbucket-pipelines.yml file:
It builds the image from scratch every time (only caching env vars in Dockerfile) and taking a lot of time to install apt-get and pip packages in Dockerfile. I thought adding caches: docker would cache the image but it doesn't, instead the image is built and saved in tmp-image.docker (from scratch everytime). I want it so that if Pipfile or Dockerfile hasn't changed, it just uses the tmp-image.docker from previous pipeline run, but again caches: docker didn't help me with that.
image: atlassian/default-image:2
options:
docker: true
pipelines:
pull-requests:
'**': #this runs as default for any branch not elsewhere defined
- step:
name: 'Build Docker and Setup'
caches:
- docker
- pip
script:
- docker build -t elgiz/app .
- docker save --output tmp-image.docker elgiz/app
artifacts:
- tmp-image.docker
- parallel:
- step:
name: 'PyTest'
script:
- docker load --input ./tmp-image.docker
- echo "PyTest running..."
- docker run --init -v $BITBUCKET_CLONE_DIR:/opt/atlassian/pipelines/agent/build/app elgiz/app xvfb-run pytest --cov=test/
- echo "PyTest completed."
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Elgiz Abbasov hi.
Maybe its good idea:
Regards, Igor
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Igor Stoyanov The goal was to avoid using DockerHub and use bitbucket pipelines features but I guess the caching doesn't work as I expected ;/ Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.