Docker Test for creating a dev server for an existing project.
(I am going to test it with ticha project)
Here are the steps to setup a dev server:
1. Install Docker to your computer/laptop
2. Create a working directory for projectname-Docker
3. Inside the directory, create a txt file named Dockerfile
with the following contents:
For Flask:
# Use an official Python runtime as a parent image
FROM python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
# Install any needed packages specified in requirements.txt
RUN pip install -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"] # change the name of "app.py" accordingly
For Django:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
*Note: For Django, besides using Dockerfile, we also need to create a docker-compose.yml
with the following contents:
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
4. Make sure that the Dockerfile, the app.py, and the requirement.txt in
the same directory
5. Run the command
docker build -t "projectname"
6. Run the app
docker run -p 4000:80 "projectname"
You should see a notice that the app is running at http://localhost:4000.
7. To share your image, you should tag the image so Docker can find it by running
this command:
docker tag image username/repository:tag
# replace username with your username, repository with your repository, and tag name.
8. If you want to publish the image, you should push the tagged image to the repository
by running this command:
docker push username/repository:tag
Once completed, your image is publicly visible.
9. To pull the image, just run this command:
docker run -p 4000:80 username/repository:tag
because Docker will automatically pull the image from the Docker repository.