env-docker/README.md

98 lines
3.1 KiB
Markdown
Raw Normal View History

2022-08-06 07:52:11 -05:00
# My Docker Setup
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
with `docker-compose`. Also has some usages of `Dockerfile` to build some apps.
2022-09-27 03:44:33 -05:00
## Disclaimer
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
## Other README's
Each `Config/PROJECT/` folder also contains its own README file with specific
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
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: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
Clone the project. You may choose anywhere, but `/opt/Docker` is recommended.
2023-07-04 09:18:01 -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
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
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
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
```
vi $DOCKER_HOME/Config/PROJECT_NAME/docker-compose.yml
2023-07-04 09:18:01 -07:00
```
Start all of the configured docker projects.
2023-07-04 09:18:01 -07:00
```
manage.sh -u
2023-07-04 09:18:01 -07:00
```
2023-07-04 09:12:47 -07: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
Compose projects are set up here. Each folder should have a `docker-compose.yml`
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
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
Scripts to help make life easier. Some are pretty basic, but others do nice
things like handle the container IDs.
- `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
searching in /var/whatever.
- `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.