make container more versatile
This commit is contained in:
parent
2e4e66766e
commit
a08c83165c
10
Dockerfile
10
Dockerfile
|
@ -1,8 +1,8 @@
|
|||
FROM ruby:2.4
|
||||
|
||||
## Install nodejss
|
||||
## Install nodejs
|
||||
RUN apt-get -y update \
|
||||
&& apt-get -y install nodejs mysql-client\
|
||||
&& apt-get -y install nodejs \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
## Install required gems
|
||||
|
@ -21,11 +21,11 @@ RUN /opt/postal/bin/postal bundle /opt/postal/vendor/bundle
|
|||
## Move config folder
|
||||
RUN mv /opt/postal/config /opt/postal/config-original
|
||||
|
||||
## Stick in startup script
|
||||
ADD scripts/start.sh /start.sh
|
||||
## Stick in required files
|
||||
ADD wrapper.sh /wrapper.sh
|
||||
|
||||
## Expose
|
||||
EXPOSE 5000
|
||||
|
||||
## Startup
|
||||
CMD ["/start.sh"]
|
||||
ENTRYPOINT ["/bin/bash", "-c", "/wrapper.sh ${*}", "--"]
|
||||
|
|
20
README.md
20
README.md
|
@ -4,15 +4,25 @@
|
|||
Change configuration in docker-compose.yml to update passwords for MySQL/RabbitMQ.
|
||||
Both passwords in the `postal` service, `mysql` service and `rabbitmq` service have to be changed.
|
||||
|
||||
Then, start postal by running
|
||||
Then, begin by following the directions at https://github.com/atech/postal/wiki/Installation#initialize-database--assets.
|
||||
Postal can be accessed by checking the section below. Note that "intialize-config" is already run for you, as the database parameters need to be configured before the postal tool can be used.
|
||||
|
||||
After configuration is done, run the following to bring the container up.
|
||||
```
|
||||
docker-compose up -d
|
||||
```
|
||||
### Using the `postal` tool.
|
||||
To use the `postal` tool, simply run
|
||||
```
|
||||
docker-compose run postal <parameter>
|
||||
```
|
||||
For example, the following command runs `postal initialize` inside the container.
|
||||
```
|
||||
docker-compose run postal initialize
|
||||
```
|
||||
|
||||
Default password is avaliable at https://github.com/atech/postal/wiki/Installation#accessing-the-web-interface
|
||||
|
||||
### Configuration
|
||||
Configuration is located at data/postal after the first start. Note that non-config files (i.e. files in https://github.com/atech/postal/tree/master/config) will be overwritten each time the container starts up. See https://github.com/atech/postal/blob/master/config/postal.defaults.yml for all possible configuration options
|
||||
### Migrations
|
||||
See https://github.com/atech/postal/wiki/Upgrading.
|
||||
|
||||
Be sure to do some port mappings to allow your SMTP server and HTTP(s) server to be accessed. I suggest simply port mapping the SMTP server and using [jwilder/nginx-proxy](https://github.com/jwilder/nginx-proxy) to proxy the HTTP server.
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
|
||||
web_server:
|
||||
bind_address: 0.0.0.0
|
|
@ -4,9 +4,13 @@ services:
|
|||
build: .
|
||||
image: postal
|
||||
container_name: postal
|
||||
command: run
|
||||
ports:
|
||||
- 80:5000
|
||||
- 25:2525
|
||||
- 127.0.0.1:80:5000
|
||||
- 127.0.0.1:25:2525
|
||||
depends_on:
|
||||
- "mysql"
|
||||
- "rabbitmq"
|
||||
volumes:
|
||||
- ./data/postal:/opt/postal/config
|
||||
- ./data/docker:/docker
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Refresh config
|
||||
cp -R /opt/postal/config-original/* /opt/postal/config
|
||||
|
||||
## Generate keys
|
||||
/opt/postal/bin/postal initialize-config
|
||||
|
||||
if [[ $(cat /opt/postal/config/postal.yml| grep -i web_server |wc -l) == 0 ]]; then
|
||||
cat /docker/webserver_bind.yml >> /opt/postal/config/postal.yml
|
||||
fi
|
||||
|
||||
## Set MySQL/RabbitMQ usernames/passwords
|
||||
### MySQL Main DB
|
||||
sed -i -e '/main_db:/!b' -e ':a' -e "s/host.*/host: mysql/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
sed -i -e'/main_db:/!b' -e ':a' -e "s/username.*/username: root/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
sed -i -e'/main_db:/!b' -e ':a' -e "s/password.*/password: $MYSQL_ROOT_PASSWORD/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
sed -i -e'/main_db:/!b' -e ':a' -e "s/database.*/database: $MYSQL_DATABASE/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
### MySQL Message DB
|
||||
sed -i -e '/message_db:/!b' -e ':a' -e "s/host.*/host: mysql/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
sed -i -e'/message_db:/!b' -e ':a' -e "s/username.*/username: root/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
sed -i -e'/message_db:/!b' -e ':a' -e "s/password.*/password: $MYSQL_ROOT_PASSWORD/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
### RabbitMQ
|
||||
sed -i -e '/rabbitmq:/!b' -e ':a' -e "s/host.*/host: rabbitmq/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
sed -i -e '/rabbitmq:/!b' -e ':a' -e "s/username.*/username: $RABBITMQ_DEFAULT_USER/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
sed -i -e '/rabbitmq:/!b' -e ':a' -e "s/password.*/password: $RABBITMQ_DEFAULT_PASS/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
sed -i -e '/rabbitmq:/!b' -e ':a' -e "s/vhost.*/vhost: \/$RABBITMQ_DEFAULT_VHOST/;t trail" -e 'n;ba' -e ':trail' -e 'n;btrail' /opt/postal/config/postal.yml
|
||||
|
||||
## Clean Up
|
||||
rm -rf /opt/postal/tmp/pids/*
|
||||
|
||||
## Initialize DB
|
||||
echo "== Waiting for MySQL to start up =="
|
||||
while ! mysqladmin ping -h mysql --silent; do
|
||||
sleep 1
|
||||
done
|
||||
if [[ $(mysql -h mysql -uroot -p$MYSQL_ROOT_PASSWORD -s --skip-column-names -e "SELECT COUNT(DISTINCT table_name) FROM information_schema.columns WHERE table_schema = 'postal'") == 0 ]]; then
|
||||
/opt/postal/bin/postal initialize
|
||||
else
|
||||
/opt/postal/bin/postal upgrade
|
||||
fi
|
||||
|
||||
## Run
|
||||
/opt/postal/bin/postal run
|
Loading…
Reference in New Issue
Block a user