act: docker-compose: command not found

Hi, this really nice repo for running action in locally. But I have a problem when running docker-compose in action.

This is output

$ act -j test
[build/test] 🚀  Start image=node:12.6-buster-slim
[build/test]   🐳  docker run image=node:12.6-buster-slim entrypoint=["/usr/bin/tail" "-f" "/dev/null"] cmd=[]
[build/test]   🐳  docker cp src=C:\Users\Liem\docker\wordpress-docker-compose/. dst=/github/workspace
[build/test] ⭐  Run actions/checkout@v2
[build/test]   ✅  Success - actions/checkout@v2
[build/test] ⭐  Run Build service s
[build/test]   | /github/workflow/1: line 2: docker-compose: command not found
[build/test]   ❌  Failure - Build service s
Error: exit with `FAILURE`: 127

This is my workflow config

name: build
on: 
  push:
    branches:
      - master
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Build service s
        run: docker-compose up -d
      - name: List container
        run: docker-compose ps
      - name: Test Wordpress container
        run: docker run --rm --network container:wordpress-docker-compose_wordpress_1 appropriate/curl --retry 3 --retry-connrefused http://localhost:8080/
      - name: Test PhpMyAdmin container
        run: docker run --rm --network container:wordpress-docker-compose_phpmyadmin_1 appropriate/curl --retry 3 --retry-connrefused http://localhost:8888/

This is my docker-compose.yml file

version: '3.7'

services:
  wordpress:
    image: wordpress:latest
    depends_on:
      - wordpress_db
    ports:
      - "8080:80"
#    volumes:
#     - type: bind
#       source: ./wp-content
#       target: /var/www/html/wp-content
    restart: always
    environment:
      WORDPRESS_DB_HOST: wordpress_db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: secret
      WORDPRESS_DB_NAME: wordpress

  wordpress_db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: secret

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - wordpress_db
    restart: always
    ports:
      - "8888:80"
    environment:
      PMA_HOST: wordpress_db
      MYSQL_ROOT_PASSWORDL: secret
    networks:
      - back

networks:
  back:
volumes:
  db_data: {}

My PC:

  • Windows 10. version 1909
  • Docker version 19.03.5, build 633a0ea

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 6
  • Comments: 21 (2 by maintainers)

Most upvoted comments

Using --platform ubuntu-latest=lucasalt/act_base:latest instead of --platform ubuntu-latest=lucasalt/act_base worked for me without docker login. Many thanks!

Related to #107

See https://github.com/nektos/act#runners.

You can customize the image used for the runs-on. I’ve created an image that is a match to GitHub runners, but its like 15GB!

Medium images already contain docker-compose

I did pick the Medium image on first act run (see the image name below, as listed on https://github.com/nektos/act#runners), and got docker-compose: command not found anyway:

image

Here’s the workflow file: https://github.com/openwhyd/openwhyd/blob/master/.github/workflows/ci.yml#L308

Another way is to create additional action setup-docker-compose like we have setup-node which is responsible for docker-compose installation

and this action can internally perform docker-compose --version to skip himself if docker-compose installed already. or it can internally check enverounment env=REAL_GITHUB_ACTION_IMAGE to skip himself.

I think it is more general way then create new image because it don’t need to recreate image every time when base image changed.

I was about to use the runner image from @LucasCtrl but the latest version is from 2020 and it’s hard to assume act did not bring improvements since then.

Except if there is a watcher for act images that rebuild one with docker-compose, I won’t go this way.

The solution I use for now:

      - uses: KengoTODA/actions-setup-docker-compose@v1
        if: ${{ env.ACT }}
        name: Install `docker-compose` for local simulations
        with:
          version: '2.14.2'

(specify the version otherwise the action will require you providing a valid GITHUB_TOKEN)

https://docs.docker.jp/compose/install.html#linux-compose

It works GitHub Actions and act.

- run: sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- run: sudo chmod +x /usr/local/bin/docker-compose

I create a image with docker and docker-compose.

docker pull echowuhao/act_base:latest

I think it is enough for those who use docker and docker-compose to run tests.

if not, easy to adjust based on the Dockerfile.

https://github.com/swuecho/act_base

I did not know how I end up delete the image. thanks @LucasCtrl to set it up.

Did you tried to be logged in before doing

docker pull lucasalt/act_base:latest

by using

docker login -u USERNAME -p PASSWORD

with your docker hub credentials?

no, I thought I could download it without login - I somehow found another link to your image and that I could download without login (don’t remember the URL though) and it works great

Closing this as a duplicate of #107