diff --git a/.github/workflows/docker-cd-dev.yml b/.github/workflows/docker-cd-dev.yml index bc3edefb..c0fea293 100644 --- a/.github/workflows/docker-cd-dev.yml +++ b/.github/workflows/docker-cd-dev.yml @@ -15,6 +15,9 @@ jobs: with: submodules: true + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Log in to Docker Hub uses: docker/login-action@v1 with: @@ -22,8 +25,9 @@ jobs: password: ${{ secrets.DOCKER_TOKEN }} - name: Build and push Server Docker image - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v4 with: context: . + platforms: linux/amd64,linux/arm64,windows/amd64 push: true tags: codexrems/rems-administrator:REMSvExperimental diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 5a98c3bf..2a8ee258 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -14,7 +14,10 @@ jobs: uses: actions/checkout@v2 with: submodules: true - + + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Log in to Docker Hub uses: docker/login-action@v1 with: @@ -22,8 +25,9 @@ jobs: password: ${{ secrets.DOCKER_TOKEN }} - name: Build and push Server Docker image - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v4 with: context: . + platforms: linux/amd64,linux/arm64,windows/amd64 push: true tags: codexrems/rems-administrator:REMSvCurrent diff --git a/DeveloperSetupGuide.md b/DeveloperSetupGuide.md index 38e146e1..195e07d1 100644 --- a/DeveloperSetupGuide.md +++ b/DeveloperSetupGuide.md @@ -300,7 +300,13 @@ or ```bash docker-compose -f docker-compose-dev.yml build --no-cache --pull [ ...] docker-compose -f docker-compose-dev.yml up --force-recreate [ ...] -``` +``` +** Note for Apple M1 Mac developers: ** +Prepend `docker-compose` commands with `COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 DOCKER_DEFAULT_PLATFORM=linux/arm64`. +```bash + COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 DOCKER_DEFAULT_PLATFORM=linux/arm64 docker-compose -f docker-compose-dev.yml up +``` + ```bash # Options: # --force-recreate Recreate containers even if their configuration and image haven't changed. diff --git a/SimpleSetupGuide.md b/SimpleSetupGuide.md index 3090736f..7e7ccce7 100644 --- a/SimpleSetupGuide.md +++ b/SimpleSetupGuide.md @@ -131,10 +131,10 @@ Your computer must have these minimum requirements: docker-compose up ``` - Note, if you are using an M1/M2 mac, you need to use the following command to start the docker compose application + Note, if you are using an M1/M2 mac, you'll need to prepend `docker-compose` commands with `COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 DOCKER_DEFAULT_PLATFORM=linux/arm64`. ```bash cd REMS # Need to execute commands in directory with corresponding docker-compose.yml file located in the REMS repository - docker-compose -f docker-compose-m1.yml up + COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 DOCKER_DEFAULT_PLATFORM=linux/arm64 docker-compose up ``` ### 4. Verify everything is working diff --git a/docker-compose-m1.yml b/docker-compose-m1.yml deleted file mode 100644 index 9e7c52a5..00000000 --- a/docker-compose-m1.yml +++ /dev/null @@ -1,89 +0,0 @@ -version: '3.6' -services: - keycloak: - container_name: rems_prod_m1_keycloak - # command: ["-Djboss.http.port=8180"] - ports: - - '8180:8080' - environment: - - KEYCLOAK_USER=admin - - KEYCLOAK_PASSWORD=admin - - DB_VENDOR=h2 - volumes: - - rems_prod_m1_keycloak-data:/opt/jboss/keycloak/standalone/data/ - image: codexrems/keycloak-m1:REMSvCurrent - - # Create test-ehr container - test-ehr: # Name of our service - container_name: rems_prod_m1_test-ehr - ports: # Port binding to host from docker container - - '8080:8080' # Bind port 3000 of host to 3000 of container - image: codexrems/test-ehr:REMSvCurrent - environment: - - DOCKER_PROFILE=true - extra_hosts: - - "host.docker.internal:host-gateway" - - - # Create crd request generator container - crd-request-generator: # Name of our service - image: codexrems/crd-request-generator:REMSvCurrent - container_name: rems_prod_m1_crd-request-generator - environment: - - REACT_APP_REMS_CONFIG=true - ports: # Port binding to host from docker container - - "3000:3000" # Bind port 3000 of host to 3000 of container - - "3001:3001" - - # Create dtr container - dtr: # Name of our service - image: codexrems/dtr:REMSvCurrent - container_name: rems_prod_m1_dtr - ports: # Port binding to host from docker container - - "3005:3005" # Bind port 3000 of host to 3000 of container - - rems-smart-on-fhir: - image: codexrems/rems-smart-on-fhir:REMSvCurrent - container_name: rems_prod_m1_rems-smart-on-fhir - ports: - - "4040:4040" - - # # Create rems container - rems-administrator: # Name of our service - image: codexrems/rems-administrator:REMSvCurrent - container_name: rems_prod_m1_rems - ports: # Port binding to host from docker container - - "9015:9015" # Bind port 3000 of host to 3000 of container - environment: - VSAC_API_KEY: ${VSAC_API_KEY} - MONGO_URL: mongodb://rems-user:pass@pims_remsadmin_mongo:27017 - - pims_remsadmin_mongo: - image: mongo - container_name: rems_prod_m1_pims-remsadmin-mongo - ports: - - '27017:27017' - environment: - MONGO_INITDB_ROOT_USERNAME: rems-admin-pims-root - MONGO_INITDB_ROOT_PASSWORD: rems-admin-pims-password - volumes: - - rems_prod_m1_pims_remsadmin_mongo:/data/db - - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js - - pims: - image: codexrems/pims:REMSvCurrent - container_name: rems_prod_m1_pims - environment: - REMS_ADMIN_BASE: http://rems-administrator:8090 - MONGO_HOSTNAME: mongodb://pims_remsadmin_mongo:27017/pims - ports: - - "5050:5050" - - "5051:5051" - - - - -volumes: - rems_prod_m1_keycloak-data: - rems_prod_m1_pims_remsadmin_mongo: -