Skip to content

Latest commit

 

History

History
76 lines (50 loc) · 3.86 KB

README.md

File metadata and controls

76 lines (50 loc) · 3.86 KB

Containerized Oracle XE 11g

This repo contains a Dockerfile to create an image with Oracle Database 11g Express Edition running in CentOS 7

Why one more Docker image for Oracle XE?

The main reason for this repo is to have clean and transparent Dockerfile, without any magic behind. It is based on official CentOS images and the build is completely described in the Dockerfile. Unlike many other images on the Net this one uses stock rpm installer provided by Oracle, not repacked by alien.

How to build

Let's assume that you are familar with Docker and building Docker images from Dockerfiles.

  1. Download the rpm installer.

  2. Unzip it and pack oracle-xe-11.2.0-1.0.x86_64.rpm in tar.gz archive named oracle-xe-11.2.0-1.0.x86_64.rpm.tar.gz so that it's contents look like:

     % tar -tf oracle-xe-11.2.0-1.0.x86_64.rpm.tar.gz
     oracle-xe-11.2.0-1.0.x86_64.rpm
    
  3. ...or you can simply download prepared tar.gz here.

  4. Place the tarball inside the rpm directory of this repo.

  5. Run docker build -t "madhead/docker-oracle-xe" . from the root directory of this repo.

  6. You should get your image ready in a few minutes (apart from downloading base centos:centos7 image).

During the configuration of Oracle XE instance two files - init.ora and initXETemp.ora - are overridden with ones from config directory of this repo. The only difference is that memory_target parameter is commented in them to prevent ORA-00845: MEMORY_TARGET not supported on this system error. The only piece of magic in this image :).

Building on boot2docker & Docker Machine

Thanks @pmelopereira for the instructions!

The steps are same as for usual build, but you need to configure swap space in boot2docker / Docker Machine prior the build:

  1. Log into boot2docker / Docker Machine: boot2docker ssh or docker-machine ssh default (replace default if needed).

  2. Create a file named bootlocal.sh in /var/lib/boot2docker/ with the following content:

     #!/bin/sh
    
     SWAPFILE=/mnt/sda1/swapfile
    
     dd if=/dev/zero of=$SWAPFILE bs=1024 count=2097152
     mkswap $SWAPFILE && chmod 600 $SWAPFILE && swapon $SWAPFILE
    
  3. Make this file executable: chmod u+x /var/lib/boot2docker/bootlocal.sh

After restarting boot2docker / Docker Machine, it will have increased swap size. Just follow the steps above to build this image.

How to use

Basically docker run -p 8089:8080 -p 1521:1521 -d madhead/docker-oracle-xe will start new container and bind it's local ports 1521 and 8080 to host's 1521 and 8089 respectively. Read Docker documentation for details.

Oracle Web Management Console (apex) will be available at http://localhost:8089/apex. Use the following credentials to login:

workspace: INTERNAL
user: ADMIN
password: oracle

Connect to the database using the following details:

hostname: localhost
port: 1521
sid: XE
username: system
password: oracle

Known issues

To build and use this image your host machine need to have at least 2GB of swap. This is an Oracle XE limitation, described here. It is not possible to use swapon command from inside the container to increase swap space due to security reasons. If you know how to bypass this, please share the knowledge with me.