2022-08-06 07:52:11 -05:00
|
|
|
# My Docker Setup
|
2023-07-23 14:51:48 -07:00
|
|
|
Scripting my way into the Docker world. I was unable to find a good tutorial on
|
|
|
|
using and managing containers so this is what made sense to me based on practice
|
2024-01-24 11:05:44 +00:00
|
|
|
with `docker-compose`. Also has some usages of `Dockerfile` to build some apps.
|
2022-09-27 03:44:33 -05:00
|
|
|
|
|
|
|
## Disclaimer
|
2024-01-24 11:05:44 +00:00
|
|
|
Currently the project only focuses on `apt` based operating systems, and is
|
|
|
|
being used in production by the latest Debian release.
|
2022-08-06 07:52:11 -05:00
|
|
|
|
2023-07-23 14:51:48 -07:00
|
|
|
## Other README's
|
2024-01-24 11:05:44 +00:00
|
|
|
Each `Config/PROJECT/` folder also contains its own README file with specific
|
2023-07-23 14:51:48 -07:00
|
|
|
information to running that sub project. This file's job is to cover the general
|
|
|
|
Docker installation. The others then contain details on their program setup.
|
|
|
|
|
2022-08-06 07:52:11 -05:00
|
|
|
## How To Use
|
2023-07-23 14:51:48 -07:00
|
|
|
Most of these commands benefit from being root. Something like a `sudo su -` if
|
|
|
|
you feel comfortable with it. Otherwise be aware that using sudo may cause file
|
|
|
|
permission conflicts when interacting with the configuration files and folders.
|
2023-07-04 09:19:47 -07:00
|
|
|
|
2023-07-04 09:17:04 -07:00
|
|
|
Install the project dependencies.
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
|
|
|
apt install git bash
|
|
|
|
```
|
2023-07-04 09:12:47 -07:00
|
|
|
|
2023-07-23 14:51:48 -07:00
|
|
|
Clone the project. You may choose anywhere, but `/opt/Docker` is recommended.
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
2025-01-03 07:59:46 -07:00
|
|
|
git clone https://git.hyperling.com/me/env-docker /opt/Docker
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
2023-07-04 09:12:47 -07:00
|
|
|
|
2024-01-24 11:05:44 +00:00
|
|
|
Load the environment variables from wherever you chose to put the project.
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
|
|
|
source /opt/Docker/source.env
|
|
|
|
```
|
2023-07-04 09:12:47 -07:00
|
|
|
|
2023-07-23 14:51:48 -07:00
|
|
|
Install docker to the system using the official repos.
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
|
|
|
install.sh
|
|
|
|
```
|
2023-07-04 09:12:47 -07:00
|
|
|
|
2024-01-24 11:05:44 +00:00
|
|
|
Copy default configuration for usage by management script.
|
|
|
|
For example, to enable Nextcloud:
|
|
|
|
```
|
|
|
|
cd $DOCKER_HOME/Config/Nextcloud
|
|
|
|
cp docker-compose.standard.yml docker-compose.yml
|
|
|
|
cp env.standard .env
|
|
|
|
```
|
|
|
|
|
|
|
|
Be sure to edit the environment file to update any passwords or preferences.
|
|
|
|
```
|
|
|
|
vi $DOCKER_HOME/Config/Nextcloud/.env
|
|
|
|
```
|
|
|
|
|
|
|
|
If you have a new configuration to add, create an area for the new product.
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
|
|
|
create.sh PROJECT_NAME
|
|
|
|
```
|
2023-07-04 09:12:47 -07:00
|
|
|
|
2023-07-04 09:17:04 -07:00
|
|
|
Edit the project's details.
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
2024-01-24 11:05:44 +00:00
|
|
|
vi $DOCKER_HOME/Config/PROJECT_NAME/docker-compose.yml
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
|
|
|
|
2024-01-24 11:05:44 +00:00
|
|
|
Start all of the configured docker projects.
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
2024-01-24 11:05:44 +00:00
|
|
|
manage.sh -u
|
2023-07-04 09:18:01 -07:00
|
|
|
```
|
2023-07-04 09:12:47 -07:00
|
|
|
|
2024-01-24 11:05:44 +00:00
|
|
|
Cross your fingers and hope to succeed!
|
2022-08-06 07:52:11 -05:00
|
|
|
|
2022-08-06 08:18:06 -05:00
|
|
|
## Folders
|
|
|
|
|
|
|
|
### Config
|
2023-07-23 14:51:48 -07:00
|
|
|
Compose projects are set up here. Each folder should have a `docker-compose.yml`
|
2024-01-24 11:05:44 +00:00
|
|
|
file set up unless it is for utility such as DynamicDNS, which is used in CRON.
|
2022-08-06 07:52:11 -05:00
|
|
|
|
2022-08-06 08:18:06 -05:00
|
|
|
### Volumes
|
2023-07-23 14:51:48 -07:00
|
|
|
The data of the files go here if the Config is done correctly. I think this
|
|
|
|
should be easier to remember than `/var/lib/docker/volumes` when it comes time
|
|
|
|
for migrations. Hopefully all that'd be needed is to rsync `/opt/Docker` and run
|
|
|
|
`install.sh` and then `start.sh` on the new server. You are welcome to use a
|
|
|
|
directory other than `/opt/Docker`, this project is location agnostic.
|
2022-08-06 08:18:06 -05:00
|
|
|
|
|
|
|
### bin
|
2023-07-23 14:51:48 -07:00
|
|
|
Scripts to help make life easier. Some are pretty basic, but others do nice
|
|
|
|
things like handle the container IDs.
|
2024-01-24 11:05:44 +00:00
|
|
|
- `create.sh`
|
|
|
|
- Create a new folder with the needed yml file.
|
|
|
|
- `get_logs.sh`
|
|
|
|
- Create log files rather than using the `docker log` command or
|
2023-07-23 14:51:48 -07:00
|
|
|
searching in /var/whatever.
|
2024-01-24 11:05:44 +00:00
|
|
|
- `install.sh`
|
|
|
|
- Install dependencies on a new server with apt.
|
|
|
|
- `manage.sh`
|
|
|
|
- Start, stop, update, rebuild, etc all compose containers.
|
|
|
|
- `uninstall.sh`
|
|
|
|
- If something goes wrong and you'd like to start from scratch without
|
|
|
|
provisioning a new server then this should do the job.
|