- 
                Notifications
    
You must be signed in to change notification settings  - Fork 594
 
Oracle on Mac ARM64
There is currently no free Oracle database port readily available that can run on ARM64 architecture (Mac M1/M2). This makes it impossible for developers using these computers to exercise Oracle functionality/tests locally. This guide show how to work around this limitation.
The solution is to run a tool (Colima) that allows you to spin up x86_64 software on Apple M chips and then start the container as you normally would (docker run or via Testcontainers).
| 
 | 
If Homebrew is not installed properly for M1/M2 you will run into issues w/ Colima. | 
Execute which homebrew and…
No matter where you are running the container from, you must always have Colima started prior to running the container.
- 
Run Colima w/ the following command:
colima start --arch x86_64 --memory 4
 
- 
Ensure Colima is started (above)
 - 
Start the container w/ the following command:
docker run --name test-oracle -d -p 1521:1521 -e ORACLE_PASSWORD=spring -e APP_USER=spring -e APP_USER_PASSWORD=spring -e ORACLE_DATABASE=dataflow gvenzl/oracle-xe:18-slim-faststart
 - 
Stop the container w/ the following command:
docker stop test-oracle
 - 
Stop Colima w/ the following command:
colima stop
 
- 
Ensure Colima is started (above)
 - 
Set the following environment variables:
export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock export DOCKER_HOST="unix://${HOME}/.colima/docker.sock" - 
Create and start an
OracleContainerin your tests such as:OracleContainer container = new OracleContainer(DockerImageName.parse("gvenzl/oracle-xe") .withTag("18-slim-faststart")); container.start(); - 
Once you are finished running the container you can stop Colima w/ the following command:
colima stop
 
| 
 💡 
 | 
You can also simply implement the Oracle_XE_18_ContainerSupport interface in your test class which will handle the above setup. | 
- 
Ensure Oracle container running locally (above)
 - 
Include the Oracle driver by building Dataflow w/ the
local-dev-oracleprofile as follows:./mvnw clean install -DskipTests -s .settings.xml -Plocal-dev-oracle
 - 
Set the following env vars before running Dataflow:
export SPRING_DATASOURCE_URL=jdbc:oracle:thin:@localhost:1521/dataflow export SPRING_DATASOURCE_USERNAME=spring export SPRING_DATASOURCE_PASSWORD=spring export SPRING_DATASOURCE_DRIVER_CLASS_NAME=oracle.jdbc.OracleDriver
 - 
Run the Dataflow server either from w/in IDEA or
java -jar 
Here are some useful aliases for starting/stopping an Oracle database in Docker:
alias oracle-start="docker run --name test-oracle -d -p 1521:1521 -e ORACLE_PASSWORD=spring -e APP_USER=spring -e APP_USER_PASSWORD=spring -e ORACLE_DATABASE=dataflow gvenzl/oracle-xe:18-slim-faststart"
alias oracle-stop="docker stop test-oracle "
alias oracle-kill="docker stop test-oracle && docker rm test-oracle "
alias colima-start="colima start --arch x86_64 --memory 4 "
alias colima-stop="colima stop "