├── README.md └── docker_to_sh.sh /README.md: -------------------------------------------------------------------------------- 1 | # dockerfile-to-shell-script 2 | Converts a Dockerfile to a shell script, using a series of shoddy sed commands. 3 | 4 | Caveats: Only tested with our relatively limited Dockerfiles, and the output 5 | will *definitely* need examining. 6 | 7 | There are some parameters at the top - 8 | HOME_DIRECTORY Specify a home directory here for the environment you will be deploying to 9 | CONVERT_HOME_DIRECTORY If you want to convert the home directory statements to tilde's, set this to 1. 10 | 11 | Usage ./docker_to_sh.sh 12 | 13 | Software as is, used for Good, not Evil. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, &c &c. I am not proud of this. 14 | -------------------------------------------------------------------------------- /docker_to_sh.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This converts a docker file to a shell file 4 | # Almost guaranteed to not work with many Docker files, but hey, it works for us 5 | 6 | HOME_DIRECTORY=/home/dev 7 | CONVERT_HOME_DIRECTORY=1 8 | 9 | INPUT=Dockerfile 10 | OUTPUT=Dockerfile.sh 11 | 12 | cp -f $INPUT $OUTPUT 13 | 14 | # Convert FROM, MAINTAINER, VOLUME to comments 15 | sed -i "s/^FROM\s/# FROM /g" $OUTPUT 16 | sed -i "s/^MAINTAINER\s/# MAINTAINER /g" $OUTPUT 17 | sed -i "s/^VOLUME\s/# VOLUME /g" $OUTPUT 18 | 19 | # Get rid of RUNs 20 | sed -i "s/^RUN\s//g" $OUTPUT 21 | 22 | # Convert home directory into squiggles (tildes) 23 | sed -i "s/$HOME_DIRECTORY/~/g" $OUTPUT 24 | 25 | # Convert ENVs into EXPORTs 26 | sed -r 's/^ENV\s([A-Z]*)\s*([a-z]*)/export \1=\2/g' -i $OUTPUT 27 | 28 | # Get rid of EXPOSE todo: open up ports based on these? 29 | sed -i "s/^EXPOSE\s/# EXPOSE /g" $OUTPUT 30 | 31 | # Convert ADDs into cp 32 | sed -i "s/^ADD\s/cp /g" $OUTPUT 33 | 34 | # Timestamp 35 | sed -i '1s/^/# Generated by docker_to_sh, for all your shoddy bash script from Dockerfile generation needs. \n/' $OUTPUT 36 | --------------------------------------------------------------------------------