├── Dockerfile └── README.md /Dockerfile: -------------------------------------------------------------------------------- 1 | # OPAM for debian-stable with local switch of OCaml 4.05.0 2 | # Autogenerated by OCaml-Dockerfile scripts 3 | FROM ocaml/ocaml:debian-stable 4 | LABEL distro_style="apt" distro="debian" distro_long="debian-stable" arch="x86_64" ocaml_version="4.05.0" opam_version="1.2" operatingsystem="linux" 5 | RUN apt-get -y update && \ 6 | DEBIAN_FRONTEND=noninteractive apt-get -y upgrade && \ 7 | DEBIAN_FRONTEND=noninteractive apt-get -y install aspcud && \ 8 | git clone -b 1.2 git://github.com/ocaml/opam /tmp/opam && \ 9 | sh -c "cd /tmp/opam && make cold && make install && echo Not installing OPAM2 wrappers && rm -rf /tmp/opam" && \ 10 | echo 'opam ALL=(ALL:ALL) NOPASSWD:ALL' > /etc/sudoers.d/opam && \ 11 | chmod 440 /etc/sudoers.d/opam && \ 12 | chown root:root /etc/sudoers.d/opam && \ 13 | adduser --disabled-password --gecos '' opam && \ 14 | passwd -l opam && \ 15 | chown -R opam:opam /home/opam 16 | USER opam 17 | ENV HOME /home/opam 18 | WORKDIR /home/opam 19 | RUN mkdir .ssh && \ 20 | chmod 700 .ssh && \ 21 | git config --global user.email "docker@example.com" && \ 22 | git config --global user.name "Docker CI" && \ 23 | sudo -u opam sh -c "git clone -b master git://github.com/ocaml/opam-repository" && \ 24 | sudo -u opam sh -c "opam init -a -y --comp 4.05.0 /home/opam/opam-repository" && \ 25 | sudo -u opam sh -c "opam install -y depext travis-opam" 26 | ENTRYPOINT [ "opam", "config", "exec", "--" ] 27 | CMD [ "bash" ] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This repository contains a set of [Docker](http://docker.com) container definitions for various combination of [OCaml](https://ocaml.org) and the [OPAM](https://opam.ocaml.org) package manager. The containers all come preinstalled with a working compiler and an OPAM environment. Using it as simple as: 2 | 3 | ``` 4 | docker pull ocaml/opam 5 | docker run -ti ocaml/opam bash 6 | ``` 7 | 8 | ...to get a working development environment. You can grab a specific distribution and test out external dependencies as well: 9 | ``` 10 | docker run ocaml/opam:ubuntu-16.04_ocaml-4.04.0 opam depext -i cohttp lwt ssl 11 | ``` 12 | 13 | Distributions 14 | ========== 15 | 16 | The default `latest` tag points to the following distribution: 17 | 18 | Distribution | Available Switches | Command 19 | ------------ | ------------------ | ------- 20 | Debian | 4.02.3 🆂, 4.05.0 🅳 | `docker pull ocaml/opam` 21 | 22 | The latest stable distributions are summarised below. The default OCaml version available in the container is marked with a 🅳 symbol, and a system installation of OCaml (as opposed to a locally compiled switch) is marked with a 🆂 symbol. 23 | 24 | Distribution | Available Switches | Command 25 | ------------ | ------------------ | ------- 26 | Alpine | 4.04.1 🆂, 4.05.0 🅳 | `docker pull ocaml/opam:alpine` 27 | CentOS | 4.01.0 🆂, 4.05.0 🅳 | `docker pull ocaml/opam:centos` 28 | Debian | 4.02.3 🆂, 4.05.0 🅳 | `docker pull ocaml/opam:debian` 29 | Fedora | 4.02.3 🆂, 4.05.0 🅳 | `docker pull ocaml/opam:fedora` 30 | OpenSUSE | 4.03.0 🆂, 4.05.0 🅳 | `docker pull ocaml/opam:opensuse` 31 | OracleLinux | 4.05.0 🅳 | `docker pull ocaml/opam:oraclelinux` 32 | Ubuntu | 4.02.3 🆂, 4.05.0 🅳 | `docker pull ocaml/opam:ubuntu` 33 | 34 | There are also individual containers available for each combination 35 | of an OS distribution and an OCaml revision. These should be useful for 36 | testing and continuous integration, since they will remain pinned to these 37 | versions for as long as the upstream distribution is supported. Note that 38 | older releases may have security issues if upstream stops maintaining them. 39 | 40 | Distro | Compiler | Command 41 | ------ | -------- | ------- 42 | Alpine 3.5 | 4.01.0 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.01.0` 43 | Alpine 3.5 | 4.02.3 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.02.3` 44 | Alpine 3.5 | 4.03.0 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.03.0` 45 | Alpine 3.5 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.03.0_flambda` 46 | Alpine 3.5 | 4.04.0 🆂🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.04.0` 47 | Alpine 3.5 | 4.04.1 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.04.1` 48 | Alpine 3.5 | 4.04.2 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.04.2` 49 | Alpine 3.5 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.04.2_flambda` 50 | Alpine 3.5 | 4.05.0 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.05.0` 51 | Alpine 3.5 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.05.0_flambda` 52 | Alpine 3.5 | 4.06.0 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.06.0` 53 | Alpine 3.5 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:alpine-3.5_ocaml-4.06.0_flambda` 54 | Alpine 3.6 | 4.01.0 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.01.0` 55 | Alpine 3.6 | 4.02.3 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.02.3` 56 | Alpine 3.6 | 4.03.0 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.03.0` 57 | Alpine 3.6 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.03.0_flambda` 58 | Alpine 3.6 | 4.04.0 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.04.0` 59 | Alpine 3.6 | 4.04.1 🆂🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.04.1` 60 | Alpine 3.6 | 4.04.2 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.04.2` 61 | Alpine 3.6 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.04.2_flambda` 62 | Alpine 3.6 | 4.05.0 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.05.0` 63 | Alpine 3.6 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.05.0_flambda` 64 | Alpine 3.6 | 4.06.0 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.06.0` 65 | Alpine 3.6 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:alpine-3.6_ocaml-4.06.0_flambda` 66 | Alpine Stable (3.6) | 4.01.0 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.01.0` 67 | Alpine Stable (3.6) | 4.02.3 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.02.3` 68 | Alpine Stable (3.6) | 4.03.0 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.03.0` 69 | Alpine Stable (3.6) | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.03.0_flambda` 70 | Alpine Stable (3.6) | 4.04.0 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.04.0` 71 | Alpine Stable (3.6) | 4.04.1 🆂🅳 | `docker pull ocaml/opam:alpine_ocaml-4.04.1` 72 | Alpine Stable (3.6) | 4.04.2 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.04.2` 73 | Alpine Stable (3.6) | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.04.2_flambda` 74 | Alpine Stable (3.6) | 4.05.0 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.05.0` 75 | Alpine Stable (3.6) | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.05.0_flambda` 76 | Alpine Stable (3.6) | 4.06.0 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.06.0` 77 | Alpine Stable (3.6) | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:alpine_ocaml-4.06.0_flambda` 78 | CentOS 6 | 4.01.0 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.01.0` 79 | CentOS 6 | 4.02.3 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.02.3` 80 | CentOS 6 | 4.03.0 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.03.0` 81 | CentOS 6 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.03.0_flambda` 82 | CentOS 6 | 4.04.0 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.04.0` 83 | CentOS 6 | 4.04.1 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.04.1` 84 | CentOS 6 | 4.04.2 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.04.2` 85 | CentOS 6 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.04.2_flambda` 86 | CentOS 6 | 4.05.0 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.05.0` 87 | CentOS 6 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.05.0_flambda` 88 | CentOS 6 | 4.06.0 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.06.0` 89 | CentOS 6 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:centos-6_ocaml-4.06.0_flambda` 90 | CentOS 7 | 4.01.0 🆂🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.01.0` 91 | CentOS 7 | 4.02.3 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.02.3` 92 | CentOS 7 | 4.03.0 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.03.0` 93 | CentOS 7 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.03.0_flambda` 94 | CentOS 7 | 4.04.0 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.04.0` 95 | CentOS 7 | 4.04.1 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.04.1` 96 | CentOS 7 | 4.04.2 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.04.2` 97 | CentOS 7 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.04.2_flambda` 98 | CentOS 7 | 4.05.0 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.05.0` 99 | CentOS 7 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.05.0_flambda` 100 | CentOS 7 | 4.06.0 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.06.0` 101 | CentOS 7 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:centos-7_ocaml-4.06.0_flambda` 102 | Debian 7 (Wheezy) | 4.01.0 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.01.0` 103 | Debian 7 (Wheezy) | 4.02.3 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.02.3` 104 | Debian 7 (Wheezy) | 4.03.0 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.03.0` 105 | Debian 7 (Wheezy) | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.03.0_flambda` 106 | Debian 7 (Wheezy) | 4.04.0 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.04.0` 107 | Debian 7 (Wheezy) | 4.04.1 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.04.1` 108 | Debian 7 (Wheezy) | 4.04.2 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.04.2` 109 | Debian 7 (Wheezy) | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.04.2_flambda` 110 | Debian 7 (Wheezy) | 4.05.0 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.05.0` 111 | Debian 7 (Wheezy) | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.05.0_flambda` 112 | Debian 7 (Wheezy) | 4.06.0 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.06.0` 113 | Debian 7 (Wheezy) | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:debian-7_ocaml-4.06.0_flambda` 114 | Debian 8 (Jessie) | 4.01.0 🆂🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.01.0` 115 | Debian 8 (Jessie) | 4.02.3 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.02.3` 116 | Debian 8 (Jessie) | 4.03.0 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.03.0` 117 | Debian 8 (Jessie) | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.03.0_flambda` 118 | Debian 8 (Jessie) | 4.04.0 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.04.0` 119 | Debian 8 (Jessie) | 4.04.1 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.04.1` 120 | Debian 8 (Jessie) | 4.04.2 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.04.2` 121 | Debian 8 (Jessie) | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.04.2_flambda` 122 | Debian 8 (Jessie) | 4.05.0 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.05.0` 123 | Debian 8 (Jessie) | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.05.0_flambda` 124 | Debian 8 (Jessie) | 4.06.0 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.06.0` 125 | Debian 8 (Jessie) | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:debian-8_ocaml-4.06.0_flambda` 126 | Debian 9 (Buster) | 4.01.0 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.01.0` 127 | Debian 9 (Buster) | 4.02.3 🆂🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.02.3` 128 | Debian 9 (Buster) | 4.03.0 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.03.0` 129 | Debian 9 (Buster) | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.03.0_flambda` 130 | Debian 9 (Buster) | 4.04.0 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.04.0` 131 | Debian 9 (Buster) | 4.04.1 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.04.1` 132 | Debian 9 (Buster) | 4.04.2 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.04.2` 133 | Debian 9 (Buster) | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.04.2_flambda` 134 | Debian 9 (Buster) | 4.05.0 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.05.0` 135 | Debian 9 (Buster) | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.05.0_flambda` 136 | Debian 9 (Buster) | 4.06.0 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.06.0` 137 | Debian 9 (Buster) | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:debian-10_ocaml-4.06.0_flambda` 138 | Debian 9 (Stretch) | 4.01.0 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.01.0` 139 | Debian 9 (Stretch) | 4.02.3 🆂🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.02.3` 140 | Debian 9 (Stretch) | 4.03.0 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.03.0` 141 | Debian 9 (Stretch) | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.03.0_flambda` 142 | Debian 9 (Stretch) | 4.04.0 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.04.0` 143 | Debian 9 (Stretch) | 4.04.1 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.04.1` 144 | Debian 9 (Stretch) | 4.04.2 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.04.2` 145 | Debian 9 (Stretch) | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.04.2_flambda` 146 | Debian 9 (Stretch) | 4.05.0 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.05.0` 147 | Debian 9 (Stretch) | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.05.0_flambda` 148 | Debian 9 (Stretch) | 4.06.0 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.06.0` 149 | Debian 9 (Stretch) | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:debian-9_ocaml-4.06.0_flambda` 150 | Debian Stable | 4.01.0 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.01.0` 151 | Debian Stable | 4.02.3 🆂🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.02.3` 152 | Debian Stable | 4.03.0 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.03.0` 153 | Debian Stable | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.03.0_flambda` 154 | Debian Stable | 4.04.0 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.04.0` 155 | Debian Stable | 4.04.1 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.04.1` 156 | Debian Stable | 4.04.2 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.04.2` 157 | Debian Stable | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.04.2_flambda` 158 | Debian Stable | 4.05.0 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.05.0` 159 | Debian Stable | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.05.0_flambda` 160 | Debian Stable | 4.06.0 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.06.0` 161 | Debian Stable | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:debian-stable_ocaml-4.06.0_flambda` 162 | Debian Testing | 4.01.0 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.01.0` 163 | Debian Testing | 4.02.3 🆂🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.02.3` 164 | Debian Testing | 4.03.0 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.03.0` 165 | Debian Testing | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.03.0_flambda` 166 | Debian Testing | 4.04.0 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.04.0` 167 | Debian Testing | 4.04.1 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.04.1` 168 | Debian Testing | 4.04.2 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.04.2` 169 | Debian Testing | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.04.2_flambda` 170 | Debian Testing | 4.05.0 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.05.0` 171 | Debian Testing | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.05.0_flambda` 172 | Debian Testing | 4.06.0 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.06.0` 173 | Debian Testing | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:debian-testing_ocaml-4.06.0_flambda` 174 | Debian Unstable | 4.01.0 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.01.0` 175 | Debian Unstable | 4.02.3 🆂🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.02.3` 176 | Debian Unstable | 4.03.0 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.03.0` 177 | Debian Unstable | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.03.0_flambda` 178 | Debian Unstable | 4.04.0 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.04.0` 179 | Debian Unstable | 4.04.1 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.04.1` 180 | Debian Unstable | 4.04.2 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.04.2` 181 | Debian Unstable | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.04.2_flambda` 182 | Debian Unstable | 4.05.0 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.05.0` 183 | Debian Unstable | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.05.0_flambda` 184 | Debian Unstable | 4.06.0 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.06.0` 185 | Debian Unstable | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:debian-unstable_ocaml-4.06.0_flambda` 186 | Fedora 22 | 4.01.0 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.01.0` 187 | Fedora 22 | 4.02.3 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.02.3` 188 | Fedora 22 | 4.03.0 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.03.0` 189 | Fedora 22 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.03.0_flambda` 190 | Fedora 22 | 4.04.0 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.04.0` 191 | Fedora 22 | 4.04.1 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.04.1` 192 | Fedora 22 | 4.04.2 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.04.2` 193 | Fedora 22 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.04.2_flambda` 194 | Fedora 22 | 4.05.0 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.05.0` 195 | Fedora 22 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.05.0_flambda` 196 | Fedora 22 | 4.06.0 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.06.0` 197 | Fedora 22 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:fedora-22_ocaml-4.06.0_flambda` 198 | Fedora 23 | 4.01.0 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.01.0` 199 | Fedora 23 | 4.02.3 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.02.3` 200 | Fedora 23 | 4.03.0 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.03.0` 201 | Fedora 23 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.03.0_flambda` 202 | Fedora 23 | 4.04.0 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.04.0` 203 | Fedora 23 | 4.04.1 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.04.1` 204 | Fedora 23 | 4.04.2 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.04.2` 205 | Fedora 23 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.04.2_flambda` 206 | Fedora 23 | 4.05.0 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.05.0` 207 | Fedora 23 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.05.0_flambda` 208 | Fedora 23 | 4.06.0 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.06.0` 209 | Fedora 23 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:fedora-23_ocaml-4.06.0_flambda` 210 | Fedora 24 | 4.01.0 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.01.0` 211 | Fedora 24 | 4.02.3 🆂🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.02.3` 212 | Fedora 24 | 4.03.0 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.03.0` 213 | Fedora 24 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.03.0_flambda` 214 | Fedora 24 | 4.04.0 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.04.0` 215 | Fedora 24 | 4.04.1 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.04.1` 216 | Fedora 24 | 4.04.2 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.04.2` 217 | Fedora 24 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.04.2_flambda` 218 | Fedora 24 | 4.05.0 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.05.0` 219 | Fedora 24 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.05.0_flambda` 220 | Fedora 24 | 4.06.0 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.06.0` 221 | Fedora 24 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:fedora-24_ocaml-4.06.0_flambda` 222 | Fedora 25 | 4.01.0 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.01.0` 223 | Fedora 25 | 4.02.3 🆂🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.02.3` 224 | Fedora 25 | 4.03.0 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.03.0` 225 | Fedora 25 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.03.0_flambda` 226 | Fedora 25 | 4.04.0 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.04.0` 227 | Fedora 25 | 4.04.1 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.04.1` 228 | Fedora 25 | 4.04.2 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.04.2` 229 | Fedora 25 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.04.2_flambda` 230 | Fedora 25 | 4.05.0 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.05.0` 231 | Fedora 25 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.05.0_flambda` 232 | Fedora 25 | 4.06.0 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.06.0` 233 | Fedora 25 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:fedora-25_ocaml-4.06.0_flambda` 234 | OpenSUSE 42.1 | 4.01.0 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.01.0` 235 | OpenSUSE 42.1 | 4.02.3 🆂🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.02.3` 236 | OpenSUSE 42.1 | 4.03.0 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.03.0` 237 | OpenSUSE 42.1 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.03.0_flambda` 238 | OpenSUSE 42.1 | 4.04.0 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.04.0` 239 | OpenSUSE 42.1 | 4.04.1 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.04.1` 240 | OpenSUSE 42.1 | 4.04.2 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.04.2` 241 | OpenSUSE 42.1 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.04.2_flambda` 242 | OpenSUSE 42.1 | 4.05.0 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.05.0` 243 | OpenSUSE 42.1 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.05.0_flambda` 244 | OpenSUSE 42.1 | 4.06.0 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.06.0` 245 | OpenSUSE 42.1 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:opensuse-42.1_ocaml-4.06.0_flambda` 246 | OpenSUSE 42.2 | 4.01.0 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.01.0` 247 | OpenSUSE 42.2 | 4.02.3 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.02.3` 248 | OpenSUSE 42.2 | 4.03.0 🆂🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.03.0` 249 | OpenSUSE 42.2 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.03.0_flambda` 250 | OpenSUSE 42.2 | 4.04.0 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.04.0` 251 | OpenSUSE 42.2 | 4.04.1 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.04.1` 252 | OpenSUSE 42.2 | 4.04.2 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.04.2` 253 | OpenSUSE 42.2 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.04.2_flambda` 254 | OpenSUSE 42.2 | 4.05.0 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.05.0` 255 | OpenSUSE 42.2 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.05.0_flambda` 256 | OpenSUSE 42.2 | 4.06.0 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.06.0` 257 | OpenSUSE 42.2 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:opensuse-42.2_ocaml-4.06.0_flambda` 258 | OracleLinux 7 | 4.01.0 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.01.0` 259 | OracleLinux 7 | 4.02.3 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.02.3` 260 | OracleLinux 7 | 4.03.0 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.03.0` 261 | OracleLinux 7 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.03.0_flambda` 262 | OracleLinux 7 | 4.04.0 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.04.0` 263 | OracleLinux 7 | 4.04.1 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.04.1` 264 | OracleLinux 7 | 4.04.2 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.04.2` 265 | OracleLinux 7 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.04.2_flambda` 266 | OracleLinux 7 | 4.05.0 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.05.0` 267 | OracleLinux 7 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.05.0_flambda` 268 | OracleLinux 7 | 4.06.0 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.06.0` 269 | OracleLinux 7 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:oraclelinux-7_ocaml-4.06.0_flambda` 270 | Ubuntu 12.04 | 4.01.0 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.01.0` 271 | Ubuntu 12.04 | 4.02.3 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.02.3` 272 | Ubuntu 12.04 | 4.03.0 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.03.0` 273 | Ubuntu 12.04 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.03.0_flambda` 274 | Ubuntu 12.04 | 4.04.0 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.04.0` 275 | Ubuntu 12.04 | 4.04.1 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.04.1` 276 | Ubuntu 12.04 | 4.04.2 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.04.2` 277 | Ubuntu 12.04 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.04.2_flambda` 278 | Ubuntu 12.04 | 4.05.0 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.05.0` 279 | Ubuntu 12.04 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.05.0_flambda` 280 | Ubuntu 12.04 | 4.06.0 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.06.0` 281 | Ubuntu 12.04 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-12.04_ocaml-4.06.0_flambda` 282 | Ubuntu 14.04 | 4.01.0 🆂🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.01.0` 283 | Ubuntu 14.04 | 4.02.3 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.02.3` 284 | Ubuntu 14.04 | 4.03.0 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.03.0` 285 | Ubuntu 14.04 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.03.0_flambda` 286 | Ubuntu 14.04 | 4.04.0 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.04.0` 287 | Ubuntu 14.04 | 4.04.1 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.04.1` 288 | Ubuntu 14.04 | 4.04.2 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.04.2` 289 | Ubuntu 14.04 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.04.2_flambda` 290 | Ubuntu 14.04 | 4.05.0 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.05.0` 291 | Ubuntu 14.04 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.05.0_flambda` 292 | Ubuntu 14.04 | 4.06.0 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.06.0` 293 | Ubuntu 14.04 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-14.04_ocaml-4.06.0_flambda` 294 | Ubuntu 16.04 | 4.01.0 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.01.0` 295 | Ubuntu 16.04 | 4.02.3 🆂🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.02.3` 296 | Ubuntu 16.04 | 4.03.0 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.03.0` 297 | Ubuntu 16.04 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.03.0_flambda` 298 | Ubuntu 16.04 | 4.04.0 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.04.0` 299 | Ubuntu 16.04 | 4.04.1 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.04.1` 300 | Ubuntu 16.04 | 4.04.2 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.04.2` 301 | Ubuntu 16.04 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.04.2_flambda` 302 | Ubuntu 16.04 | 4.05.0 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.05.0` 303 | Ubuntu 16.04 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.05.0_flambda` 304 | Ubuntu 16.04 | 4.06.0 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.06.0` 305 | Ubuntu 16.04 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-16.04_ocaml-4.06.0_flambda` 306 | Ubuntu 17.04 | 4.01.0 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.01.0` 307 | Ubuntu 17.04 | 4.02.3 🆂🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.02.3` 308 | Ubuntu 17.04 | 4.03.0 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.03.0` 309 | Ubuntu 17.04 | 4.03.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.03.0_flambda` 310 | Ubuntu 17.04 | 4.04.0 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.04.0` 311 | Ubuntu 17.04 | 4.04.1 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.04.1` 312 | Ubuntu 17.04 | 4.04.2 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.04.2` 313 | Ubuntu 17.04 | 4.04.2+flambda 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.04.2_flambda` 314 | Ubuntu 17.04 | 4.05.0 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.05.0` 315 | Ubuntu 17.04 | 4.05.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.05.0_flambda` 316 | Ubuntu 17.04 | 4.06.0 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.06.0` 317 | Ubuntu 17.04 | 4.06.0+flambda 🅳 | `docker pull ocaml/opam:ubuntu-17.04_ocaml-4.06.0_flambda` 318 | 319 | 320 | Using the Containers 321 | ================ 322 | 323 | Each container comes with an initialised OPAM repository pointing to the central repository. The default user in the container is called `opam`, and `sudo` is configured to allow password-less access to `root`. 324 | 325 | To build an environment for the [Jane Street Core](https://realworldocaml.org/) library on the latest stable OCaml, a simple Dockerfile looks like this: 326 | 327 | ``` 328 | FROM ocaml/opam 329 | opam depext -i core 330 | ``` 331 | You can build and use this image locally for development by saving the Dockerfile and: 332 | 333 | ``` 334 | docker build -t ocaml-core . 335 | docker run -ti ocaml-core bash 336 | ``` 337 | 338 | You can also use the Docker [volume sharing](https://docs.docker.com/engine/reference/builder/#volume) to map in source code from your host into the container to persist the results of your build. You can also construct more specific Dockerfiles that use the full range of OPAM commands for a custom development environment. For example, to build the [MirageOS](https://mirage.io) bleeding edge OCaml environment, this Dockerfile will add in a custom remote: 339 | 340 | ``` 341 | FROM ocaml/opam:ubuntu-15.10_ocaml-4.02.3 342 | opam remote add dev git://github.com/mirage/mirage-dev 343 | opam depext -i mirage 344 | ``` 345 | 346 | 347 | 348 | Contributing 349 | ========== 350 | 351 | To discuss these containers, please e-mail Anil Madhavapeddy or the OPAM development list at . Contributions of Dockerfiles for additional OS distributions are most welcome! The files here are all autogenerated from the [ocaml-docker-scripts](https://github.com/avsm/ocaml-docker-scripts) repository, so please do not submit any PRs directly to this location. The containers are built and hosted on the Docker Hub [ocaml organisation](https://hub.docker.com/u/ocaml). --------------------------------------------------------------------------------