I’m currently trying to deploy on Google Cloud Engine (GCE) using a Makefile
and docker-compose.yml
.
When I execute the command make community-update
on the GCE server, everything works fine.
However, when I use the same command in GitHub Actions, I encounter the following error:
Github Actions Error Log:
...
out: sleep 10...
out: sleep 30
out: community-service update start
out: docker-compose up -d community-service
err: redis-community is up-to-date
err: zookeeper is up-to-date
err: mariadb-community is up-to-date
err: kafka is up-to-date
err: discovery-service is up-to-date
err: gateway-service is up-to-date
err: Recreating community-service ...
err: [64003] Failed to execute script docker-compose
err: ERROR: for community-service 'ContainerConfig'
err: ERROR: for community-service 'ContainerConfig'
err: Traceback (most recent call last):
err: File "docker-compose", line 3, in <module>
err: File "compose/cli/main.py", line 81, in main
err: File "compose/cli/main.py", line 203, in perform_command
err: File "compose/metrics/decorator.py", line 18, in wrapper
err: File "compose/cli/main.py", line 1186, in up
err: File "compose/cli/main.py", line 1182, in up
err: File "compose/project.py", line 702, in up
err: File "compose/parallel.py", line 108, in parallel_execute
err: File "compose/parallel.py", line 206, in producer
err: File "compose/project.py", line 688, in do
err: File "compose/service.py", line 581, in execute_convergence_plan
err: File "compose/service.py", line 503, in _execute_convergence_recreate
err: File "compose/parallel.py", line 108, in parallel_execute
err: File "compose/parallel.py", line 206, in producer
err: File "compose/service.py", line 496, in recreate
err: File "compose/service.py", line 615, in recreate_container
err: File "compose/service.py", line 334, in create_container
err: File "compose/service.py", line 922, in _get_container_create_options
err: File "compose/service.py", line 962, in _build_container_volume_options
err: File "compose/service.py", line 1549, in merge_volume_bindings
err: File "compose/service.py", line 1579, in get_container_data_volumes
err: KeyError: 'ContainerConfig'
err: make: *** [Makefile:40: community-update] Error 255
I am attaching my Makefile, docker-compose.yml, and GitHub Actions workflow yml for reference.
Makefile:
community-update:
@echo "community temp start"
docker-compose up -d community-service-temp
sleep 50
docker-compose pull community-service
@echo "sleep 10..."
sleep 30
@echo "community-service update start"
docker-compose up -d community-service
@echo "sleep 60..."
sleep 60
@echo "community temp remove"
@echo "1. find container id"
@container_id=$$(docker ps | grep community-service-temp | grep -v 'CONTAINER' | awk '{print $$1}');
echo $$container_id;
echo "2. remove community temp";
docker exec -i $$container_id kill -15 $$(docker exec -i $$container_id lsof -i | grep java | awk 'NR==1 {print $$2}');
docker rm -f $$container_id;
docker image prune -f
docker-compose.yml:
community-service:
image: {username}/community-service:1.0
container_name: community-service
environment:
jasypt.encryptor.password: ${JASYPT_PASSWORD}
depends_on:
- zookeeper
- kafka
- redis-community
- mariadb-community
- discovery-service
- gateway-service
community-service-temp:
image: {username}/community-service:1.0
container_name: community-service-temp
environment:
jasypt.encryptor.password: ${JASYPT_PASSWORD}
depends_on:
- zookeeper
- kafka
- redis-community
- mariadb-community
- discovery-service
- gateway-service
- community-service
Github Actions Workflow:
name: CommunityService CI/CD
on:
push:
branches:
- 'BE/dev'
paths:
- 'src/backend/community-service/**'
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
with:
submodules: false
token: ${{ secrets.COMMUNITY_ACTION_TOKEN }}
- name: Configure Git to use PAT for submodules
run: |
git config --global url."https://${{ secrets.COMMUNITY_ACTION_TOKEN }}@github.com/".insteadOf "https://github.com/"
- name: Initialize specific submodules
run: |
git submodule init src/backend/community-service/community-service-yml
git submodule update --remote src/backend/community-service/community-service-yml
- name: Update nested submodules within specific submodule
run: |
cd src/backend/community-service/community-service-yml
git submodule update --init --recursive
- name: Cache Gradle dependencies
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x src/backend/community-service/gradlew
- name: Project Build
env:
jasypt.encryptor.password: ${{ secrets.JASYPT_PASSWORD }}
working-directory: ./src/backend/community-service
run: ./gradlew clean build
shell: bash
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Docker Image Build
run: docker build -t ${{ secrets.DOCKER_USERNAME }}/community-service:1.0 ./src/backend/community-service
- name: Docker Image Push
run: docker push ${{ secrets.DOCKER_USERNAME }}/community-service:1.0
- name: GCP 인스턴스 접속 및 무중단 배포
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.GCP_HOST }}
username: ${{ secrets.GCP_USERNAME }}
key: ${{ secrets.GCP_SSH_KEY }}
script: |
cd script
make community-update
This error doesn’t occur when running directly on a GCE server. Can anyone help me understand why it happens on GitHub Actions?
- I’ve experimented with logging into
Docker
from thescript
and then executing commands. - I’ve also tried running the
make community-update
command usingsudo
.